@Override public void onDestroy() { if (mWebView != null) { mWebView.destroy(); mWebView = null; } super.onDestroy(); }
@Override protected void setToolbar() { super.setToolbar(); mTitle = (TextView) getToolbar().findViewById(R.id.text_title); mClose = (TextView) getToolbar().findViewById(R.id.tv_close); mClose.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mProgressBar = (ProgressBar) findViewById(R.id.pb_loading); mWebView = (WebView) findViewById(R.id.webView); WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true); // mWebView.addJavascriptInterface(new JSInterface(), "JSInterface"); settings.setSaveFormData(false); settings.setCacheMode(WebSettings.LOAD_NO_CACHE); mWebView.setWebChromeClient( new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress < 100) { mProgressBar.setVisibility(View.VISIBLE); mProgressBar.setProgress(newProgress); } else { mProgressBar.setVisibility(View.GONE); } } @Override public boolean onJsAlert( WebView view, String url, String message, final JsResult result) { // 构架一个builder来显示网页中的对话框 AlertDialog.Builder builder = new AlertDialog.Builder(WebViewActivity.this); builder.setTitle("提示"); builder.setMessage(message); builder.setPositiveButton( android.R.string.ok, new AlertDialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击确定按钮之后,继续执行网页中的操作 result.confirm(); } }); builder.setCancelable(false); builder.create(); builder.show(); return true; } }); mWebView.setWebViewClient( new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { // do your handling codes here, which url is the requested url // probably you need to open that url rather than redirect: Uri uri = Uri.parse(url); if (uri.getScheme().equals("octmobile")) { return false; } else { view.loadUrl(url); mClose.setVisibility(View.VISIBLE); return false; } } @Override public void onPageFinished(WebView view, String mLoadUrl) { mTitle.setText(view.getTitle()); url = mLoadUrl; } @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { CLog.d("WebView", errorCode + " " + description); try { view.loadUrl( "file:///android_asset/error.html?url=" + URLEncoder.encode(url, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }); if (savedInstanceState != null) { url = savedInstanceState.getString(DATA_URL); } else { decodeUrl(getIntent().getStringExtra(DATA_URL)); } mWebView.loadUrl(url); }
@Override public void onPause() { super.onPause(); mWebView.onPause(); }
@Override public void onResume() { mWebView.onResume(); super.onResume(); }