Cookie在

时间:2017-03-29 13:19:19

标签: android cookies webview

需要的数据不会立即写入WebView中的cookie。但是当我等待10-15秒时,一切都还可以。 为了解释这种情况,这个例子对我来说会很好:

我打开应用程序并登录。登录后,我立即关闭应用程序。然后在我再次打开应用程序后,它显示我要注销。但是如果我在1分钟后打开应用程序,它会再次显示为已登录。对我来说,最近会写入cookie。但我找不到解决方案。如果你知道的话,请帮帮我。

我使用过CookieManager类,但它也没有帮助。

CookieManager.getInstance().setAcceptCookie(true);

2 个答案:

答案 0 :(得分:3)

我有类似的问题,我添加了以下代码并且工作了。

String myURL = "https://www.yourWebPage.com";

android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();

cookieManager.setAcceptCookie(true);
cookieManager.acceptCookie();
cookieManager.setAcceptFileSchemeCookies(true);
cookieManager.getInstance().setAcceptCookie(true);
cookieManager.getCookie(myURL); 

希望它有所帮助。

答案 1 :(得分:0)

我遇到了类似的问题,我所做的是在登录时获取cookie并将cookies上设置的加载网址设置为webView

        @Nullable
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
            String resourceUrl = request.getUrl().toString();
            Log.e(MainActivity.TAG, "the request url :" + resourceUrl);
            CookieManager cookieManager1 = CookieManager.getInstance();
            // get the resourceUrl that has session
            if (resourceUrl.equals("the url has session")){
                String Cookies = cookieManager1.getCookie(resourceUrl);
                if (Cookies != null && Cookies.contains("sessionid")){
                    String[] cookiesList = Cookies.split(";");
                    cookieManager1.removeSessionCookies(null);
                    for (String c : cookiesList) {
                        cookieManager1.setCookie("the load url", c);
                    }
                }
            }
            return super.shouldInterceptRequest(view, request);

        }