我有一项活动可让您登录页面.在下一个活动中,如果登录成功,它应该显示基于cookie的网页.
cookie被重新启动,我尝试使用以下代码将其放在webView上:
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冲突.您的代码将无缝地工作.