android webview cookie 同步时有时候会出现同步不成功的问题解决

原创 2015年11月19日 20:58:14
这个问题不是随时重现,我们在同步之前会先删除所有之前的cookies,调用:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP /*&& method != null*/){cookieManager.removeSessionCookies(new ValueCallback() {@Overridepublic void onReceiveValue(Boolean value) {Log.d(TAG, "onReceiveValue value:"+value);}});}else{ cookieManager.removeSessionCookie();}

经过查阅n多stackoverflow后发现一个答案:You have used this line - if (sessionCookie != null) { cookieManager.removeSessionCookie(); }. To ensure you receive new cookie everytime.Seems like you have gone through same issue as I faced, check below link -removeSessionCookie() issue of android (code.google.com)it says that removeSessionCookie() is implemented in a thread, so whenever it is called; a thread starts and after your setCookie(url, cookieString); is called, it removes the new cookie you just set. So for some devices it works well as removeSessionCookie() is already executed, while, for some, it remove the cookie, and we get that problem.by using SystemClock.sleep(500); , you just gave system to finish removeSessionCookie() firstI suggest you remove this removeSessionCookie(); as you are setting only one cookie, so it won't conflict with other cookies. Your code will work seamlessly.

大概意思就是说, cookieManager.removeSessionCookie()这个方法是一个异步的方法,在删除还没有结束的时候,主线程调用CookieSyncManager.getInstance().sync();方法去同步,此时,removeSessionCookie()并没有删除结束,顺带就把刚刚同步过去的session给删除了,所以导致的同步失效,哎呀,发现问题,那么好解决了,在removeSessionCookie() 的时候SystemClock.sleep(500);ok!不会再出现烦人的同步失败重定向了。如果还有更好的方法希望给我留言,谢谢了!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android cookies正确的更新方式

之前的更新方式一搜cookies的使用,很容易搜到很多文章,基本的几步大致相同,如下图:基本上都要求大家先调用cookieManager.removeAllCookie()或者调用 cookieMan...

Android中清楚Cookie和WebView的缓存

前几天在做facebook链接的时候,总是第一次成功,第二次失败,后来分析,是本地的缓存没有清空,看了facebook sdk的源码才发现,果然,要做一步清楚cookie的操作: 一、清除cooki...

android webview cookie (遇到的坑,终极方案,解决你的疑惑)

说起来webview设置cookie很简单,但是我做的过程中参考网上的代码,发现还是没做对,最后摸索了好几天才摸索出来 希望能帮助有需要的人。 设置cookie方法 /** ...

【WebView的cookie机制 】轻松搞定WebView cookie同步问题

在进行APP+H5混合开发的时候,一些功能是用native方法实现的,如登陆,一些功能是用H5实现的。所以往往需要将在native方法登陆的状态同步到H5中避免再次登陆。这种情况在Android开发中...

Android在webview上设置cookie,部分cookie失效的问题

app主页的页面都是web开发的,只有登录页是原生的,这就需要Android在调用了登录接口并成功后,把登录信息作为cookie存起来。 网上有存cookie的方法: public void co...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Android Cookie共享到WebView避免再次登录(保持登录状态)

最近在做项目时用到了webview打开指定链接的网页,可已经把webview设置了cookie但始终跳转到登录页面,这明显是cookie没有设置成功导致webview没有将设置好的cookie发送出去...

Android WebView保存Cookie登录

因项目需要,需要在App中嵌入网页,使用Nativie方式登录,然后将cookie保存到WebView中,实现免登录功能。同步Cookie到WebView的方法网上有大量的参考资料,也可以参考下面的代...

android WebView登录状态session id 和cookie同步

上次说到的WebView还有一个遇到的比较难一点的问题没有回答上来。主要是关于在用webview的时候无法保存登录状态,下次打开网页还是会打开登录界面。有两三个朋友同时问到我这个问题,而刚刚好我也不懂...
  • hkq463
  • hkq463
  • 2016年07月15日 12:51
  • 1421

Android WebView保存登陆cookie

最近给H5部门做一个app,需求比较简单,就是用webview直接loadUrl去加载网页,但做的时候遇到一个小需求,网上找的答案都不是很让人满意,感觉好多复制黏贴,所以想想,还是自己写一篇吧。 遇...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android webview cookie 同步时有时候会出现同步不成功的问题解决
举报原因:
原因补充:

(最多只允许输入30个字)