package com.llf.basemodel.commonactivity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.net.http.SslError; import android.support.v7.widget.Toolbar; import android.view.KeyEvent; import android.view.View; import android.webkit.JsResult; import android.webkit.SslErrorHandler; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import com.llf.basemodel.R; import com.llf.basemodel.base.BaseActivity; /** * Created by llf on 2016/10/21. * WebView加载网页 * http://www.jianshu.com/p/d2f5ae6b4927 */ public class WebViewActivity extends BaseActivity implements View.OnClickListener{ public static void lanuch(Context context, String url) { Intent intent = new Intent(context, WebViewActivity.class); intent.putExtra("url", url); context.startActivity(intent); } private WebView mWebView; private Toolbar mToolbar; private String url; @Override public int getLayoutId() { return R.layout.activity_webview; } @Override public void initView() { url = getIntent().getStringExtra("url"); mWebView = (WebView) findViewById(R.id.webView); mToolbar = (Toolbar)findViewById(R.id.toolbar); mToolbar.setNavigationOnClickListener(this); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true);//支持js webSettings.setJavaScriptCanOpenWindowsAutomatically(true);//允许js弹出alert mWebView.requestFocus();//触摸焦点起作用 webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);//设置缓存模式 webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true);//屏幕自适应 webSettings.setSupportZoom(false); //不支持缩放 webSettings.setAllowFileAccess(true); //设置可以访问文件 webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片 //辅助处理请求,点击链接在本browser中打开 mWebView.setWebViewClient(new WebViewClient() { //处理https请求 @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed();//等待证书响应 } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("weixin://wap/pay?")) { try { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); } catch (Exception e) { e.printStackTrace(); Toast.makeText(WebViewActivity.this, "没有安装微信,请选择其他支付方式", Toast.LENGTH_SHORT).show(); } return true; } view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { startProgressDialog(); } @Override public void onPageFinished(WebView view, String url) { if(url!=null && url.contains("http://www.jcodecraeer.com")){ String fun="javascript:function getClass(parent,sClass) { var aEle=parent.getElementsByTagName('div'); var aResult=[]; var i=0; for(i<0;i<aEle.length;i++) { if(aEle[i].className==sClass) { aResult.push(aEle[i]); } }; return aResult; } "; view.loadUrl(fun); String fun2="javascript:function hideOther() {getClass(document,'header')[0].style.display='none';getClass(document,'footer')[0].style.display='none'}"; view.loadUrl(fun2); view.loadUrl("javascript:hideOther()"); } mWebView.setVisibility(View.VISIBLE); stopProgressDialog(); } }); //辅助处理js的对话框,网站图标,网站title,加载进度 mWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); } @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { Toast.makeText(WebViewActivity.this, message, Toast.LENGTH_LONG).show(); return true; } }); mWebView.loadUrl(url); } /** * 默认按返回键会直接退出app * * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { mWebView.goBack();// 返回前一个页面 return true; } return super.onKeyDown(keyCode, event); } @Override protected void onStop() { //处理长时间执行js动画导致耗电 mWebView.getSettings().setJavaScriptEnabled(false); super.onStop(); } @Override protected void onDestroy() { if (mWebView != null) { mWebView.removeAllViews(); mWebView.clearCache(true); mWebView.clearHistory(); mWebView.destroy(); mWebView = null; } super.onDestroy(); } @Override public void onClick(View v) { this.finish(); } }