把我的webview用法分析和记录一下。代码里面都有注释。
public WebView webView;
webView = (WebView) view.findViewById(R.id.webViewBaseView);
WebSettings settings = webView.getSettings();
//JavaScript
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
// 缓存的使用,WebSettings.LOAD_NO_CACHE(不用缓存)
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
settings.setDefaultTextEncodingName("UTF-8"); // 设置默认的显示编码
//webView.addJavascriptInterface(new PersonPlugin(), "window");// new类名,交互访问时使用的别名
webView.loadUrl(Url);//Url为要访问的网址
/**
* 监听
*/
webView.setWebViewClient(new WebViewClient() {
//在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview
//里跳转,不跳到浏览器那边。这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,
//于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//点击事件,继续用该WebView加载
webView.loadUrl(url);
return true;
}
//网络加载时调用
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
// Log.v("log", "==onPageStarted==="+url);
}
//加载完成时调用
@Override
public void onPageFinished(WebView view, String url) {
// Log.v("log", "==onPageFinished===" + url);
super.onPageFinished(view, url);
}
//加载失败时调用
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.v("log", "==onReceivedError===" + description + "==" + failingUrl);
view.loadUrl(errorHtml);
}
});
webView.setWebChromeClient(new WebChromeClient() {
//网页加载进度值
@Override
public void onProgressChanged(WebView view, int newProgress) {
// Log.v("log", "==newProgress===" + newProgress);
super.onProgressChanged(view, newProgress);
}
//获取网页的title
@Override
public void onReceivedTitle(WebView view, String title) {
// Log.v("log", "==onReceivedTitle===" + title);
super.onReceivedTitle(view, title);
}
});
按返回键时, 不退出程序而是返回上一浏览页面:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
或者
@Override
public void onBackPressed() {
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
super.onBackPressed();
}
}