Cookie和Webview – Android中的CookieSyncManager!

前端之家收集整理的这篇文章主要介绍了Cookie和Webview – Android中的CookieSyncManager!前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一项活动可让您登录页面.在下一个活动中,如果登录成功,它应该显示基于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上其他问题的代码而丢失的,但是当我加载网页时,它似乎不起作用.似乎我的代码有一些问题,但我看不到哪里,我开始认为我做错了什么.

解决方法

你用过这条线 –
if (sessionCookie != null) {
                          cookieManager.removeSessionCookie();

  }

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

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

removeSessionCookie() issue of android (code.google.com)

它说removeSessionCookie()是在一个线程中实现的,所以无论何时调用它;一个线程在你的setCookie(url,cookieString)之后开始;被调用,它会删除你刚设置的新cookie.
因此,对于某些设备,它可以正常工作,因为removeSessionCookie()已经执行,而对于某些设备,它会删除cookie,我们就会遇到这个问题.

通过使用SystemClock.sleep(500);,你刚给系统完成了removeSessionCookie()

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

原文链接:https://www.f2er.com/html/231801.html

猜你在找的HTML相关文章