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冲突.您的代码将无缝地工作.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些