如何从WebView清除登录凭据?

时间:2013-07-24 21:04:56

标签: android cookies android-webview cache-control

我想清除应用程序数据,就像我可以从设置中做到这一点。当我登录到facebook或twitter时,我需要在WebView中清除登录信息,因为当我为以下每个用户登录一次时自动使用相同的数据

我试试这个: http://www.hrupin.com/2011/11/how-to-clear-user-data-in-your-android-application-programmatically

无效,登录信息仍在浏览器中

我尝试重置应用:

Intent i = getBaseContext().getPackageManager()
             .getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

@Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        view.clearCache(true);

        if(b){
            Log.d("WEBVIEW", "onFinisghed b true");
        Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
        noCacheHeaders.put("Pragma", "no-cache");
        noCacheHeaders.put("Cache-Control", "no-cache");
        view.loadUrl(url, noCacheHeaders);
        b = false;
        }...

大多数条目是指链接中描述的第一种方法,但它在我的情况下不起作用,有什么想法吗?

3 个答案:

答案 0 :(得分:8)

尝试清除浏览器Cookie。登录凭据通常存储在浏览器cookie中,您可以通过调用

删除它
CookieManager.getInstance().removeAllCookie();

更新

CookieManager.getInstance()。 removeAllCookie ()已在Android SDK 21(Lollipop)中弃用,并被CookieManager.getInstance()取代。 removeAllCookies(ValueCallback callback)。自2018年11月起, removeAllCookie() 仍按指定工作。此外,在较新的方法 removeAllCookies(ValueCallback callback)中,如果您不希望收到有关已删除cookie的通知,则回调函数可以为null。因此,使用

是安全的
CookieManager.getInstance().removeAllCookies(null)
在Android SDK 21之后定位设备时,

直接替换CookieManager.getInstance()。 removeAllCookie ()。

CookieManager文档在这里。

答案 1 :(得分:0)

答案 2 :(得分:0)

<强> CookieManager.getInstance()removeAllCookie();

上述方法将解决问题,但此方法在API级别21中已弃用,因此请改用 removeAllCookies(ValueCallback)

此方法是异步的。如果提供了ValueCallback,则一旦操作完成,将在当前线程的Looper上调用onReceiveValue()。提供给回调的值表示是否删除了任何cookie。如果您不需要知道操作何时完成或者是否删除了任何cookie,则可以传递null作为回调,在这种情况下,从没有Looper的线程调用该方法是安全的。

ValueCallback :删除Cookie后执行的回调