Cookies和Webview - Android中的CookieSyncManager!

Joa*_*rom 9 cookies android login http webview

我有一项活动可让您登录页面.在下一个活动中,如果登录成功,它应该显示基于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");
Run Code Online (Sandbox Code Playgroud)

这是基于StackOverflow上其他问题的代码而丢失的,但是当我加载网页时它似乎不起作用.似乎我的代码有些问题,但我看不到哪里,我开始认为我做错了.

Dar*_*pan 9

你用过这条线 -

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

  }
Run Code Online (Sandbox Code Playgroud)

.确保您每次都收到新的cookie.

好像你遇到了我面临的同样问题,请查看以下链接 -

removeSessionCookie()问题android(code.google.com)

它说它removeSessionCookie()是在一个线程中实现的,所以每当它被调用时; 线程启动,在setCookie(url, cookieString);调用之后,它会删除刚刚设置的新cookie.因此对于某些设备而言,它removeSessionCookie()已经执行得很好,而对于某些设备,它会删除cookie,我们就会遇到这个问题.

通过使用SystemClock.sleep(500);,你只是让系统首先完成removeSessionCookie()

我建议你删除这个,removeSessionCookie();因为你只设置一个cookie,所以它不会与其他cookie冲突.您的代码将无缝地工作.