package com.yeshi.ec.rebate.myapplication.ui;
|
|
import android.content.Intent;
|
import android.graphics.PixelFormat;
|
import android.os.Bundle;
|
import android.view.KeyEvent;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.webkit.JavascriptInterface;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebSettings;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
import android.widget.Button;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.ProgressBar;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.ali.auth.third.ui.context.CallbackContext;
|
import com.alibaba.baichuan.android.trade.AlibcTrade;
|
import com.alibaba.baichuan.android.trade.model.AlibcShowParams;
|
import com.alibaba.baichuan.android.trade.model.OpenType;
|
import com.alibaba.baichuan.android.trade.page.AlibcDetailPage;
|
import com.alibaba.baichuan.trade.biz.AlibcConstants;
|
import com.alibaba.baichuan.trade.biz.applink.adapter.AlibcFailModeType;
|
import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams;
|
import com.bumptech.glide.Glide;
|
import com.google.gson.Gson;
|
import com.umeng.analytics.MobclickAgent;
|
import com.wpc.library.DeviceUuidFactory;
|
import com.wpc.library.util.GetManifestDataUtil;
|
import com.wpc.library.util.MobileUtil;
|
import com.wpc.library.util.NetUtils;
|
import com.wpc.library.util.common.PackageUtils2;
|
import com.wpc.library.util.common.StringUtils;
|
import com.wpc.library.util.security.MD5Utils;
|
import com.yeshi.ec.rebate.myapplication.BuXinConstant;
|
import com.yeshi.ec.rebate.myapplication.R;
|
import com.yeshi.ec.rebate.myapplication.callBack.MiDuoTradeCallback;
|
import com.yeshi.ec.rebate.myapplication.ui.dialog.ShapeLoadingDialog;
|
import com.yeshi.ec.rebate.myapplication.ui.recommend.GoodsDetailActivityTB;
|
import com.yeshi.ec.rebate.myapplication.ui.recommend.GoodsDetailBrowerActivity;
|
import com.yeshi.ec.rebate.myapplication.ui.recommend.SearchActivity;
|
import com.yeshi.ec.rebate.myapplication.util.TopStatusSettings;
|
import com.yeshi.ec.rebate.myapplication.util.baichuan.AlibcTradeUtil;
|
import com.yeshi.ec.rebate.myapplication.util.user.UserUtil;
|
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
public class BrowserActivity extends BaseActivity implements OnClickListener {
|
private ImageView iv_right;
|
private TextView tv_top_bar_left;
|
private TextView tv_top_bar_left2;
|
private Button tv_top_bar_middle;
|
private WebView webview;
|
private FrameLayout fl_webview;
|
ProgressBar progressBar;
|
ShapeLoadingDialog pd = null;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.browser_activity);
|
TopStatusSettings.setStatusViewAndDeepColor(this);
|
String url = getIntent().getStringExtra("url");
|
|
getWindow().setFormat(PixelFormat.TRANSLUCENT);
|
tv_top_bar_left = findViewById(R.id.tv_top_bar_left);
|
tv_top_bar_left2 = findViewById(R.id.tv_top_bar_left2);
|
iv_right = findViewById(R.id.iv_top_bar_right);
|
iv_right.setImageDrawable(getResources().getDrawable(R.drawable.ic_web_share));
|
tv_top_bar_left2.setVisibility(View.VISIBLE);
|
tv_top_bar_middle = findViewById(R.id.tv_top_bar_middle1);
|
tv_top_bar_middle.setVisibility(View.VISIBLE);
|
fl_webview = findViewById(R.id.fl_webview);
|
tv_top_bar_left.setOnClickListener(this);
|
tv_top_bar_left2.setOnClickListener(this);
|
|
webview = new WebView(BrowserActivity.this);
|
fl_webview.addView(webview, new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT,
|
FrameLayout.LayoutParams.MATCH_PARENT));
|
WebSettings webSettings = webview.getSettings();
|
webSettings.setJavaScriptEnabled(true);
|
webSettings.setDomStorageEnabled(true);
|
webSettings.setTextZoom(100);
|
|
webview.setDrawingCacheEnabled(true);
|
progressBar = findViewById(R.id.myProgressBar);
|
progressBar.setMax(100);
|
progressBar.setProgressDrawable(this.getResources()
|
.getDrawable(R.drawable.color_progressbar));
|
webview.setWebChromeClient(webChromeClient);
|
webview.addJavascriptInterface(new JavaInterface(), "yestv");
|
AlibcTaokeParams alibcTaokeParams = null;
|
AlibcShowParams alibcShowParams = new AlibcShowParams();
|
alibcShowParams.setOpenType(OpenType.Auto);
|
Map<String, String> exParams = new HashMap<>();
|
exParams.put(AlibcConstants.ISV_CODE, "appisvcode");
|
exParams.put("alibaba", "阿里巴巴");//自定义参数部分,可任意增删改
|
|
if (!StringUtils.isEmpty(url)) {
|
// AlibcTrade.show(BrowserActivity.this, basePage, alibcShowParams, alibcTaokeParams, exParams, new MiDuoTradeCallback(""));
|
alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpH5);
|
AlibcTradeUtil.openByUrl(BrowserActivity.this, url, webview, new WebViewClient(), webChromeClient, alibcShowParams, alibcTaokeParams, null);
|
}
|
}
|
|
|
WebChromeClient webChromeClient = new WebChromeClient() {
|
|
@Override
|
public void onReceivedTitle(WebView view, String title) {
|
if (!StringUtils.isEmpty(title) && title.length() <= 15)
|
tv_top_bar_middle.setText(title);
|
// Log.e("mResult", title);
|
}
|
|
@Override
|
public void onProgressChanged(WebView webView, int i) {
|
if (i == 100) {
|
progressBar.setVisibility(View.GONE);
|
} else {
|
if (View.INVISIBLE == progressBar.getVisibility()) {
|
progressBar.setVisibility(View.VISIBLE);
|
}
|
progressBar.setProgress(i);
|
}
|
super.onProgressChanged(webView, i);
|
}
|
};
|
|
@Override
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
CallbackContext.onActivityResult(requestCode, resultCode, data);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
MobclickAgent.onPageStart("网页");
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
MobclickAgent.onPageEnd("网页");
|
}
|
|
@Override
|
protected void onDestroy() {
|
webview.reload();
|
super.onDestroy();
|
|
}
|
|
@Override
|
protected void onStop() {
|
super.onStop();
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left: {
|
if (!webview.canGoBack())
|
finish();
|
else {
|
webview.goBack();
|
}
|
}
|
break;
|
case R.id.tv_top_bar_left2: {
|
finish();
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
|
if (webview.canGoBack()) {
|
webview.goBack(); // goBack()表示返回WebView的上一页面
|
return true;
|
} else {
|
finish();
|
}
|
}
|
return super.onKeyDown(keyCode, event);
|
}
|
|
|
class JavaInterface {
|
|
@JavascriptInterface
|
public String getUid() {
|
return getSharedPreferences("user", MODE_PRIVATE).getString("uid", "0");
|
}
|
|
@JavascriptInterface
|
public void setTitle(final String title) {
|
// tv_top_bar_middle.setText(title);
|
tv_top_bar_middle.post(new Runnable() {
|
@Override
|
public void run() {
|
if (null != title && !StringUtils.isEmpty(title.trim()))
|
tv_top_bar_middle.setText(title);
|
}
|
});
|
}
|
|
@JavascriptInterface
|
public String getVersion() {
|
return PackageUtils2.getVersionCode(BrowserActivity.this) + "";
|
}
|
|
@JavascriptInterface
|
public void toast(String str) {
|
Toast.makeText(BrowserActivity.this, str, Toast.LENGTH_LONG).show();
|
}
|
|
@JavascriptInterface
|
public String getSign(String str) {
|
return MD5Utils.getMD532(str + "@?,223Hbb88lll");
|
}
|
|
|
@JavascriptInterface
|
public void jumpGoodsSplash(long id) {
|
Intent intent = new Intent(BrowserActivity.this, GoodsDetailActivityTB.class);
|
intent.putExtra("id", id + "");
|
intent.putExtra("from", "web");
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void setTopMenuRightIcon(final String picUrl, final String jsCallback) {
|
iv_right.post(new Runnable() {
|
@Override
|
public void run() {
|
iv_right.setVisibility(View.VISIBLE);
|
Glide.with(BrowserActivity.this).load(picUrl).into(iv_right);
|
iv_right.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
webview.loadUrl("javascript:" + jsCallback);
|
}
|
});
|
}
|
});
|
}
|
|
@JavascriptInterface
|
public void jumpBaiChuan(String tbClientInfo, String url, String auctionId) {
|
AlibcTaokeParams alibcTaokeParams = null;
|
AlibcShowParams alibcShowParams = new AlibcShowParams();
|
alibcShowParams.setOpenType(OpenType.Auto);
|
Map<String, String> exParams = new HashMap<>();
|
exParams.put(AlibcConstants.ISV_CODE, "appisvcode");
|
exParams.put("alibaba", "阿里巴巴");//自定义参数部分,可任意增删改
|
|
if (!StringUtils.isEmpty(tbClientInfo)) {
|
alibcTaokeParams = new AlibcTaokeParams("", "", "");
|
alibcTaokeParams.setPid(BuXinConstant.BAICHUAN_PID);
|
JSONObject object = null;
|
try {
|
object = new JSONObject(tbClientInfo);
|
} catch (JSONException e) {
|
|
}
|
String pid = object.optString("pid");
|
String appKey = object.optString("appKey");
|
String adZoneId = object.optString("adZoneId");
|
alibcTaokeParams.setPid(pid);
|
alibcTaokeParams.setAdzoneid(adZoneId);
|
alibcTaokeParams.pid = pid;
|
alibcTaokeParams.adzoneid = adZoneId;
|
alibcTaokeParams.extraParams = new HashMap<>();
|
alibcTaokeParams.extraParams.put("taokeAppkey", appKey);
|
}
|
|
if (!StringUtils.isEmpty(url)) {
|
alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpH5);
|
AlibcTradeUtil.openByUrl(BrowserActivity.this, url, webview, new WebViewClient(), webChromeClient, alibcShowParams, alibcTaokeParams, null);
|
|
} else {
|
AlibcDetailPage basePage = new AlibcDetailPage(auctionId);
|
AlibcTrade.openByBizCode(BrowserActivity.this, basePage, webview, new WebViewClient(), webChromeClient, "detail", alibcShowParams, alibcTaokeParams, exParams, new MiDuoTradeCallback(""));
|
}
|
}
|
|
@JavascriptInterface
|
public void jumpSearch(String key) {
|
Intent intent = new Intent(BrowserActivity.this, SearchActivity.class);
|
intent.putExtra("key", key);
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void jumpGoodsDetail(long id) {
|
Intent intent = new Intent(BrowserActivity.this, GoodsDetailBrowerActivity.class);
|
intent.putExtra("id", id + "");
|
intent.putExtra("isTrolley", true);
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void jumpPage(String pageClassName, String paramJson) {
|
Intent intent = null;
|
JSONObject param = null;
|
try {
|
if (StringUtils.isEmpty(paramJson)) {
|
param = null;
|
} else {
|
param = new JSONObject(paramJson);
|
}
|
if (StringUtils.isEmpty(pageClassName)) {
|
return;
|
} else {
|
intent = new Intent(BrowserActivity.this, Class.forName(pageClassName));
|
}
|
} catch (JSONException e) {
|
param = null;
|
e.printStackTrace();
|
} catch (ClassNotFoundException e) {
|
e.printStackTrace();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if (null != param) {
|
@SuppressWarnings("unchecked")
|
Iterator<String> its = param.keys();
|
while (its.hasNext()) {
|
String key = its.next();
|
String value = param.optString(key);
|
intent.putExtra(key, value);
|
}
|
}
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void login() {
|
UserUtil.jumpLogin(BrowserActivity.this);
|
}
|
|
@JavascriptInterface
|
public void setShareBtn(final int show) {
|
runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
if (show == 0) {//按钮隐藏
|
iv_right.setVisibility(View.INVISIBLE);
|
} else {//按钮显示
|
iv_right.setVisibility(View.VISIBLE);
|
}
|
}
|
});
|
}
|
|
@JavascriptInterface
|
public void hiddenTopMenuCloseBtn() {
|
tv_top_bar_left2.setVisibility(View.GONE);
|
}
|
|
@JavascriptInterface
|
public String getRequestBaseParams(String json) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<>();
|
int version = PackageUtils2.getVersionCode(BrowserActivity.this);
|
long time = System.currentTimeMillis();
|
String deviceType = MobileUtil.getSystemModel();
|
if (!StringUtils.isEmpty(json)) {
|
JSONObject jsonObject = null;
|
try {
|
jsonObject = new JSONObject(json);
|
Iterator<String> iterator = jsonObject.keys();
|
while (iterator.hasNext()) {
|
String key = iterator.next();
|
params.put(key, jsonObject.optString(key));
|
}
|
} catch (JSONException e) {
|
|
}
|
}
|
params.put("packages", getPackageName());
|
params.put("Version", version + "");
|
params.put("appkey", BuXinConstant.TAO_BAO_KE_KEY);
|
params.put("platform", "android");
|
params.put("apiversion", "1");
|
params.put("channel", GetManifestDataUtil.getAppMetaData(BrowserActivity.this, "UMENG_CHANNEL"));
|
String imei = MobileUtil.getIMEI(BrowserActivity.this);
|
if (!StringUtils.isEmpty(imei))
|
params.put("imei", imei);
|
params.put("osVersion", MobileUtil.getSystemVersion());
|
params.put("network", NetUtils.getNetworkState(BrowserActivity.this));
|
params.put("deviceType", StringUtils.isEmpty(deviceType) ? "" : deviceType);
|
params.put("time", time + "");
|
params.put("Device", new DeviceUuidFactory(BrowserActivity.this).getDeviceUuid() + "");
|
Iterator<String> its = params.keySet().iterator();
|
List<String> list = new ArrayList<>();
|
while (its.hasNext()) {
|
String key = its.next();
|
Object value = params.get(key);
|
list.add(key + "=" + value);
|
}
|
Collections.sort(list);
|
String sign = "";
|
for (String str : list) {
|
sign += str + "&";
|
}
|
params.put("sign", MD5Utils.getMD532(sign + "buXiNjie2017!"));
|
Gson gson = new Gson();
|
String str = gson.toJson(params);
|
// Log.e("mResult", str);
|
return str;
|
}
|
|
@JavascriptInterface
|
public void hideLoading() {
|
iv_right.post(new Runnable() {
|
@Override
|
public void run() {
|
if (pd != null && pd.isShowing())
|
pd.dismiss();
|
}
|
});
|
|
}
|
|
@JavascriptInterface
|
public void showLoading() {
|
iv_right.post(new Runnable() {
|
@Override
|
public void run() {
|
if (pd == null) {
|
pd = new ShapeLoadingDialog.Builder(BrowserActivity.this).build();
|
}
|
pd.show();
|
}
|
});
|
}
|
|
@JavascriptInterface
|
public void finishPage() {
|
iv_right.post(new Runnable() {
|
@Override
|
public void run() {
|
finish();
|
}
|
});
|
}
|
|
}
|
}
|