我有一个活动可以让你登录到页面。在下一个活动中,如果登录成功,它应该显示基于cookie的网页。
cookie将被检索,我尝试使用以下代码将其放到webview上:

    Cookie sessionCookie = LoginWebView.cookie;
    CookieSyncManager.createInstance(webview.this);
    CookieManager cookieManager = CookieManager.getInstance();
    if (sessionCookie != null) {
                        cookieManager.removeSessionCookie();
        String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
        Log.v(TAG, "COOKIE SYNC: " + cookieString);
        cookieManager.setCookie(domain, cookieString);
        CookieSyncManager.getInstance().sync();

    }

    webView.setWebViewClient(new MyWebViewClient ());
    webView.loadUrl("http://a_page.com/getpageiphone.aspx?p=home");

这完全是基于stackoverflow上其他问题的代码,但是当我加载web页面时,它似乎不起作用。似乎我的代码有点不对劲,但我看不清在哪里,我开始觉得自己做错了什么。

最佳答案

你用过这句台词-

 if (sessionCookie != null) {
                          cookieManager.removeSessionCookie();

  }


确保你每次都能收到新的饼干。
看来你和我遇到过同样的问题,请看下面的链接-
removeSessionCookie() issue of android (code.google.com)
它说removeSessionCookie()是在一个线程中实现的,因此每当调用它时;一个线程启动并且在调用setCookie(url, cookieString);之后,它会删除刚刚设置的新cookie。
因此,对于某些设备来说,它工作得很好,而且removeSessionCookie()已经执行,而对于某些设备来说,它删除了cookie,我们就遇到了这个问题。
通过使用SystemClock.sleep(500);,您只需让系统先完成removeSessionCookie()
我建议您删除这个removeSessionCookie();,因为您只设置了一个cookie,所以不会与其他cookie冲突。您的代码将无缝工作。

07-24 20:08