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的使用进行一次系统的学习。

posted @ 2012-04-10 14:14  日光之下无新事  阅读(996)  评论(1编辑  收藏  举报