package com.haicaojie.android.ui;
|
|
import android.app.Notification;
|
import android.app.NotificationManager;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.graphics.PixelFormat;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.provider.Settings;
|
import android.util.Base64;
|
import android.view.KeyEvent;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.webkit.DownloadListener;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebResourceError;
|
import android.webkit.WebResourceRequest;
|
import android.webkit.WebSettings;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
import android.widget.FrameLayout;
|
import android.widget.LinearLayout;
|
import android.widget.ProgressBar;
|
import android.widget.RemoteViews;
|
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.core.taoke.AlibcTaokeParams;
|
import com.haicaojie.android.R;
|
import com.haicaojie.android.ui.invite.ShareBrowserActivity;
|
import com.lcjian.library.content.ConnectivityChangeHelper;
|
import com.lcjian.library.util.NetUtils;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.umeng.analytics.MobclickAgent;
|
import com.umeng.socialize.UMShareAPI;
|
import com.haicaojie.android.BuXinConstant;
|
import com.haicaojie.android.callBack.MiDuoTradeCallback;
|
import com.haicaojie.android.ui.category.CategoryActivity;
|
import com.haicaojie.android.ui.recommend.GoodsDetailBrowerActivity;
|
import com.haicaojie.android.util.ShareContentDialog;
|
import com.haicaojie.android.util.downutil.DownFiles;
|
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.net.URLDecoder;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
|
/**
|
* 客户端直接调用的网页
|
*/
|
public class BrowserActivity extends BaseActivity implements OnClickListener {
|
|
private TextView tv_top_bar_left;
|
private TextView tv_top_bar_left2;
|
private TextView tv_top_bar_middle;
|
private WebView webview;
|
private FrameLayout fl_webview;
|
ProgressBar progressBar;
|
|
private LinearLayout ll_no_net;
|
private LinearLayout ll_request_failture;
|
private boolean isNoNet = false;
|
private boolean isFailture = false;
|
private ConnectivityChangeHelper mChangeHelper;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.browser_activity);
|
/*
|
* 计算状态栏高度并设置
|
*/
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
Window window = getWindow();
|
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
|
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
int result = 0;
|
int resourceId = getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = getResources().getDimensionPixelSize(resourceId);
|
}
|
//设置状态栏文字颜色及图标为深色
|
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
|
result);
|
findViewById(R.id.v_status_bar).setLayoutParams(params);
|
} else {
|
findViewById(R.id.v_status_bar).setVisibility(View.GONE);
|
}
|
String url = getIntent().getStringExtra("url");
|
|
getWindow().setFormat(PixelFormat.TRANSLUCENT);
|
tv_top_bar_left = (TextView) findViewById(R.id.tv_top_bar_left);
|
tv_top_bar_left2 = (TextView) findViewById(R.id.tv_top_bar_left2);
|
tv_top_bar_left2.setVisibility(View.VISIBLE);
|
tv_top_bar_middle = (TextView) findViewById(R.id.tv_top_bar_middle);
|
fl_webview = (FrameLayout) findViewById(R.id.fl_webview);
|
ll_no_net = (LinearLayout) findViewById(R.id.ll_no_net);
|
ll_request_failture = (LinearLayout) findViewById(R.id.ll_request_failture);
|
// tv_top_bar_left2.setText("关闭");
|
tv_top_bar_left.setOnClickListener(this);
|
tv_top_bar_left2.setOnClickListener(this);
|
findViewById(R.id.iv_net_setting).setOnClickListener(this);
|
findViewById(R.id.tv_refresh).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.setCacheMode(WebSettings.LOAD_NO_CACHE);
|
|
mChangeHelper = new ConnectivityChangeHelper(this,
|
new ConnectivityChangeHelper.OnConnectivityChangeListener() {
|
|
@Override
|
public void onNetworkUnAvailable() {
|
}
|
|
@Override
|
public void onNetworkAvailable() {
|
if (isNoNet) {
|
isNoNet = false;
|
isFailture = false;
|
webview.loadUrl(getIntent().getStringExtra("url"));
|
}
|
}
|
});
|
|
webview.setDownloadListener(new MyWebViewDownLoadListener());
|
webview.setWebViewClient(new WebViewClient() {
|
@Override
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
isFailture = false;
|
fl_webview.setVisibility(View.VISIBLE);
|
ll_no_net.setVisibility(View.GONE);
|
ll_request_failture.setVisibility(View.GONE);
|
if (url.contains("intent://")) {
|
return true;
|
}
|
if (url != null && url.startsWith("yestv://")) {
|
String murl = url.split("yestv://")[1];
|
String[] params = murl.split("#");
|
if (params[0].equalsIgnoreCase("getgoodsdetail")) {
|
Intent intent = new Intent(BrowserActivity.this, GoodsDetailBrowerActivity.class);
|
intent.putExtra("id", params[1]);
|
intent.putExtra("url", params[2]);
|
intent.putExtra("title", params[3]);
|
startActivity(intent);
|
} else if (params[0].equalsIgnoreCase("share")) {
|
String content = URLDecoder.decode(params[2]);
|
String mUrl = URLDecoder.decode(params[3]);
|
String title = URLDecoder.decode(params[4]);
|
ShareContentDialog.Builder builder = new ShareContentDialog.Builder(BrowserActivity.this);
|
builder.setMessage(content);
|
builder.setUrl(mUrl);
|
builder.setTitle(title);
|
builder.setNegativeButton("取消分享", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
});
|
builder.create().show();
|
} else if (params[0].equalsIgnoreCase("jumppage")) {
|
Intent intent = null;
|
try {
|
Class<String> forName = (Class<String>) Class.forName(params[1]);
|
intent = new Intent(BrowserActivity.this, forName);
|
} catch (ClassNotFoundException e) {
|
e.printStackTrace();
|
}
|
if (params.length > 2) {
|
String str = params[2];
|
JSONObject obj = null;
|
try {
|
obj = new JSONObject(str);
|
} catch (JSONException e) {
|
}
|
Iterator<String> its = obj.keys();
|
while (its.hasNext()) {
|
String key = its.next();
|
String value = obj.optString(key);
|
intent.putExtra(key, value);
|
}
|
}
|
startActivity(intent);
|
} else if (params[0].equalsIgnoreCase("cate")) {
|
Intent intent = new Intent(BrowserActivity.this, CategoryActivity.class);
|
intent.putExtra("cateId", params[1]);
|
|
String title = params[2];
|
byte[] raw = Base64.decode(title, Base64.DEFAULT);
|
try {
|
title = new String(raw);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
intent.putExtra("key", title);
|
intent.putExtra("catename", title);
|
startActivity(intent);
|
} else if (params[0].equalsIgnoreCase("goods")) {
|
AlibcShowParams alibcShowParams = new AlibcShowParams(OpenType.H5, false);
|
AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams();
|
alibcTaokeParams.setPid(BuXinConstant.BAICHUAN_PID);
|
alibcTaokeParams.setAdzoneid(BuXinConstant.BAICHUAN_ADZONE_ID);
|
alibcTaokeParams.pid = BuXinConstant.BAICHUAN_PID;
|
alibcTaokeParams.adzoneid = BuXinConstant.BAICHUAN_ADZONE_ID;
|
alibcTaokeParams.extraParams = new HashMap<>();
|
alibcTaokeParams.extraParams.put("taokeAppkey", BuXinConstant.TAO_BAO_KE_KEY);
|
String mUrl = "";
|
AlibcDetailPage alibcBasePage = new AlibcDetailPage(mUrl);
|
AlibcTrade.show(BrowserActivity.this, webview, new android.webkit.WebViewClient(), new android.webkit.WebChromeClient(), alibcBasePage,
|
alibcShowParams, alibcTaokeParams, null, new MiDuoTradeCallback(mUrl));
|
}
|
return true;
|
}
|
return super.shouldOverrideUrlLoading(view, url);
|
}
|
|
@Override
|
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
|
super.onReceivedError(view, request, error);
|
|
isFailture = true;
|
}
|
|
@Override
|
public void onPageFinished(WebView webView, String s) {
|
super.onPageFinished(webView, s);
|
if (isFailture) {
|
if (NetUtils.getNetworkState(BrowserActivity.this).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
ll_request_failture.setVisibility(View.GONE);
|
ll_no_net.setVisibility(View.VISIBLE);
|
isNoNet = true;
|
} else {
|
ll_request_failture.setVisibility(View.VISIBLE);
|
ll_no_net.setVisibility(View.GONE);
|
}
|
fl_webview.setVisibility(View.GONE);
|
} else {
|
ll_request_failture.setVisibility(View.GONE);
|
ll_no_net.setVisibility(View.GONE);
|
fl_webview.setVisibility(View.VISIBLE);
|
}
|
}
|
});
|
progressBar = (ProgressBar) findViewById(R.id.myProgressBar);
|
progressBar.setMax(100);
|
progressBar.setProgressDrawable(this.getResources()
|
.getDrawable(R.drawable.color_progressbar));
|
// tv_top_bar_middle.setText(getIntent().getStringExtra("title"));
|
webview.setWebChromeClient(new WebChromeClient() {
|
|
@Override
|
public void onReceivedTitle(WebView view, String title) {
|
tv_top_bar_middle.setText(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);
|
}
|
});
|
webview.loadUrl(url);
|
// webview.loadUrl("http://192.168.1.122:8020/Test/css/test.html");
|
}
|
|
|
// 文件下载监听
|
private class MyWebViewDownLoadListener implements DownloadListener {
|
|
@Override
|
public void onDownloadStart(String url, String userAgent,
|
String contentDisposition, String mimetype, long contentLength) {
|
startDownLoadFile(url);
|
/*
|
* Uri uri = Uri.parse(url); Intent intent = new
|
* Intent(Intent.ACTION_VIEW, uri);
|
* startActivity(intent);
|
*/
|
}
|
}
|
|
private NotificationManager manager;
|
private Notification notif;
|
int j = -1;
|
|
private void startDownLoadFile(String url) {
|
|
new DownFiles(this, new DownFiles.IProgress() {
|
|
@Override
|
public void getProgress(int p) {
|
// stub
|
if (p == 100) {
|
handler.sendEmptyMessage(1);
|
} else {
|
if (manager == null || notif == null) {
|
Toast.makeText(BrowserActivity.this, "文件已经开始下载",
|
Toast.LENGTH_SHORT).show();
|
|
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
notif = new Notification();
|
notif.icon = R.drawable.ic_launcher;
|
notif.tickerText = "热门应用下载";
|
notif.contentView = new RemoteViews(getPackageName(),
|
R.layout.notify_item);
|
notif.contentView.setTextViewText(
|
R.id.content_view_text1, "热门应用下载");
|
}
|
|
Message msg = handler.obtainMessage();
|
if (j != p) {
|
msg.what = 0;
|
msg.arg1 = p;
|
handler.sendMessage(msg);
|
}
|
j = p;
|
}
|
}
|
|
}).execute(url);
|
|
}
|
|
@Override
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
CallbackContext.onActivityResult(requestCode, resultCode, data);
|
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
MobclickAgent.onPageStart("网页");
|
mChangeHelper.registerReceiver();
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
MobclickAgent.onPageEnd("网页");
|
mChangeHelper.unregisterReceiver();
|
}
|
|
@Override
|
protected void onDestroy() {
|
webview.reload();
|
super.onDestroy();
|
|
}
|
|
private Handler handler = new Handler() {
|
@Override
|
public void handleMessage(Message msg) {
|
super.handleMessage(msg);
|
switch (msg.what) {
|
case 0:
|
notif.contentView.setTextViewText(R.id.content_view_per,
|
msg.arg1 + "%");
|
manager.notify(0, notif);
|
break;
|
case 1:
|
notif.contentView
|
.setTextViewText(R.id.content_view_per, "下载完成");
|
manager.notify(0, notif);
|
j = 100;
|
manager.cancelAll();
|
break;
|
default:
|
break;
|
}
|
}
|
|
};
|
|
@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;
|
case R.id.iv_net_setting:
|
startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
case R.id.tv_refresh:
|
// isFailture = false;
|
// webview.loadUrl(getIntent().getStringExtra("url"));
|
startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
default:
|
break;
|
}
|
}
|
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
|
webview.goBack(); // goBack()表示返回WebView的上一页面
|
return true;
|
}
|
return super.onKeyDown(keyCode, event);
|
}
|
}
|