@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(); } }
I call this method in the following manner from my fragment:
mWebView.clearCache(true); mWebView.clearHistory(); U.clearCookies(getActivity()); mWebView.loadUrl(authorizeURL);
It is possible to dump the cookies for a domain before and after the call to clearCookies by:
String yahooCookies = CookieManager.getInstance().getCookie("https://yahoo.com"); Log.d(C.TAG, "Cookies for yahoo.com:" + yahooCookies);
After calling clearCookies yahooCookies will be null.
This implementation feeds my needs, I have tested it on several emulators and a prehistoric Samsung Galaxy Gio with Android 2.3.3 and Nexus 5 with Android 5.1.1.