5

我想像从设置中那样清除应用程序数据。当我登录 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;
        }...

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

4

3 回答 3

10

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

CookieManager.getInstance().removeAllCookie();

更新:

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

CookieManager.getInstance().removeAllCookies(null)

作为 CookieManager.getInstance() 的直接替代品。在 Android SDK 21 之后针对设备时的removeAllCookie ()。

CookieManager文档在这里。

于 2013-07-24T22:43:40.980 回答
0

WebView.clearCache(boolean)怎么样?

于 2013-07-24T21:11:40.127 回答
0
CookieManager.getInstance().removeAllCookie();

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

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

ValueCallback : 删除 cookie 时执行的回调

于 2017-06-07T11:53:49.320 回答