如何在webview中清除cookie上的cookie和caching的web浏览器?

在用户从我的应用程序注销后,我通过调用此方法清除以前从webviewcaching的所有内容:

public void clearCookiesAndCache(Context context){ CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManager.getInstance(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.removeAllCookies(null); } else { cookieManager.removeAllCookie(); } } 

CookieSyncManager被标记为不推荐使用,但是。 CookieSyncManager.createInstance(context)是必须被调用的,但是,如果你还没有加载webview以前。 那么在webview可能以前没有加载的情况下,我们应该如何清除cookie和caching,而不使用弃用的CookieSyncManager?

我在我的应用程序中使用以下方法:

  @SuppressWarnings("deprecation") public static void clearCookies(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { Log.d(C.TAG, "Using clearCookies code for API >=" + String.valueOf(Build.VERSION_CODES.LOLLIPOP_MR1)); CookieManager.getInstance().removeAllCookies(null); CookieManager.getInstance().flush(); } else { Log.d(C.TAG, "Using clearCookies code for API <" + String.valueOf(Build.VERSION_CODES.LOLLIPOP_MR1)); CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(context); cookieSyncMngr.startSync(); CookieManager cookieManager=CookieManager.getInstance(); cookieManager.removeAllCookie(); cookieManager.removeSessionCookie(); cookieSyncMngr.stopSync(); cookieSyncMngr.sync(); } } 

我从我的片段以下面的方式调用这个方法:

 mWebView.clearCache(true); mWebView.clearHistory(); U.clearCookies(getActivity()); mWebView.loadUrl(authorizeURL); 

在调用clearCookies之前和之后,可以转储域的cookie

 String yahooCookies = CookieManager.getInstance().getCookie("https://yahoo.com"); Log.d(C.TAG, "Cookies for yahoo.com:" + yahooCookies); 

调用clearCookies yahooCookies将为null

这个实现提供了我的需求,我已经testing了几个模拟器和史前三星Galaxy Gio与Android 2.3.3和Nexus 5与Android 5.1.1。

工作和testing..

 android.webkit.CookieManager cookieManager = CookieManager.getInstance(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.removeAllCookies(new ValueCallback<Boolean>() { // a callback which is executed when the cookies have been removed @Override public void onReceiveValue(Boolean aBoolean) { Log.d(TAG, "Cookie removed: " + aBoolean); } }); } else cookieManager.removeAllCookie(); 

我正在使用这个…

 public static void clearCache() { new WebView(getApplicationContext()).clearCache(true); } 

小心在UI线程上调用它,否则你会得到一个exception。

我只是有同样的问题。 我需要删除所有的cookies,因为我不想保留旧的,不想使用已弃用的方法。

这里的文档:

http://developer.android.com/reference/android/webkit/CookieManager.html

这里的方法是:

public abstract void removeAllCookies(ValueCallback callback)

在你的情况下:

 cookieManager.removeAllCookies(null); 

应该做这个工作。 如果用“空”它不起作用,那么你必须使用callback* …

最终你可能会在这里find答案: Android WebView Cookie问题

希望这可以帮助。 干杯