即使在注销后,WebViewClient也会加载以前的用户数据

时间:2014-07-18 09:27:54

标签: android webview webviewclient

我正在使用以下网址将URL加载到我的WebView中:

mWebView.setWebviewClient(new WebViewClient);

此URL加载Http身份验证页面。用户登录后,其凭据将保存在SharedPreference中。此外,我已经实现了注销功能,我清除了所有数据。

当我尝试加载网址时,它不会显示登录页面,而是会自动使用以前的凭据登录。如果我在普通浏览器中加载URL,登录页面加载正常。只有当我应用WebViewClient时,我才会得到上述行为。

这是我的代码: -

myWebView.getSettings().setJavaScriptEnabled(true);

        myWebView.loadUrl(url);
        WebViewDatabase.getInstance(Details1.this).clearHttpAuthUsernamePassword();
        WebViewDatabase.getInstance(Details1.this).clearUsernamePassword();
        WebViewDatabase.getInstance(Details1.this).clearFormData();


        myWebView.setWebViewClient(new WebViewClient())

我非常困惑,并在网上搜索了答案但找不到任何答案。

1 个答案:

答案 0 :(得分:1)

我花了太多时间。这些方法都不起作用,如https://code.google.com/p/android/issues/detail?id=22272所述。

最后我通过在 onReceivedHttpAuthRequest 中设置标志 wasLoggegIn 来解决它,然后当我想清除登录凭据时,检查标志:

if (wasLoggedIn) {
  Intent i=new Intent(this,MainActivity.class);
  i.setAction(Intent.ACTION_MAIN);
  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
  finish();
  try {startActivity(i);}
  catch (java.lang.Exception ignore) {}
  System.exit(0);
}

所以是的,重启应用程序。这是唯一的方法,至少在4.4.2。