diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/WebViewSignInScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/WebViewSignInScene.java index 1aff91ab4..d6e302c2e 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/WebViewSignInScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/WebViewSignInScene.java @@ -18,12 +18,14 @@ package com.hippo.ehviewer.ui.scene; import android.annotation.SuppressLint; import android.content.Context; +import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.CookieManager; +import android.webkit.CookieSyncManager; import android.webkit.WebView; import android.webkit.WebViewClient; @@ -63,7 +65,21 @@ public class WebViewSignInScene extends BaseScene { AssertUtils.assertNotNull(context); EhUtils.signOut(context); - CookieManager.getInstance().removeAllCookie(); + + // http://stackoverflow.com/questions/32284642/how-to-handle-an-uncatched-exception + CookieManager cookieManager = CookieManager.getInstance(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + cookieManager.flush(); + cookieManager.removeAllCookies(null); + cookieManager.removeSessionCookies(null); + } else { + CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(context); + cookieSyncManager.startSync(); + cookieManager.removeAllCookie(); + cookieManager.removeSessionCookie(); + cookieSyncManager.stopSync(); + } + mWebView = new WebView(context); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new LoginWebViewClient());