我正在使用以下网址将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())
我非常困惑,并在网上搜索了答案但找不到任何答案。
答案 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。