Android在使用webview时的问题
在使用webview创建自己的浏览器时,有时候想要使用“白名单”机制,使没有权限的使用者无法访问某些网页。
public static WebView browser;
private TextView titleBar;
...
...
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// 在其中对权限进行判断,如果没有权限则显示默认页面
if (...) {
// 当权限满足时
super.onPageStarted(view, url, favicon);
} else {
// 当权限不满足时
browser.stopLoading();
browser.loadUrl("file:///android_asset/notallow....xx.html");
titleBar.setText(url);
Toast.makeText(context, R.string.white_list_message,
Toast.LENGTH_LONG).show();
}
}
}
如果按照如上的做法,在执行
browser.loadUrl("file:///android_asset/notallow....xx.html");
后,会再次调用onPageStarted,造成循环调用程序重复执行。
解决方法:定义一个变量,作为一个flag来判断是否已经loadUrl一次。
这种在onPageStarted方法中执行loadUrl的写法要特别注意。
--------------------------------------
PS:有时间的话,应该对WebView的使用进行一次系统的学习。