android webview知识积累
1、如果访问的页面中有Javascript,则webview必须设置支持Javascript。
mWebView.getSettings().setJavaScriptEnabled(true);
2、如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。
mWebView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; //返回true,代表事件已处理,事件流到此终止 } });
3、如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }
4、如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。
mWebView.requestFocusFromTouch();
5、重写WebChromeClient的onProgressChanged方法更新进度条。
mWebView.setWebChromeClient(new WebChromeClient() { //当WebView进度改变时更新窗口进度 @Override public void onProgressChanged(WebView view, int newProgress) { //Activity的进度范围在0到10000之间,所以这里要乘以100 LoadActivity.this.setProgress(newProgress * 100); } });
6、使WebView支持点击下载链接可跳转。
mWebView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url , String userAgent , String contentDisposition , String mimetype , long contentLength) { // TODO Auto-generated method stub Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } });