当前位置: 首页 > news >正文

帝国cms企业&行业协会网站模版/搜狗网站排名软件

帝国cms企业&行业协会网站模版,搜狗网站排名软件,福建坤辕建设工程有限公司网站,我的世界网页版在线玩华为系统更新后安装了一个谷歌6月安全补丁的东西,然后之前写的调h5页面的部分就出现了问题,后台查过发现是Android端调h5页面时cookie没能带过去,导致了登录失败。于是对setCookie部分的代码进行了调试,发现单步运行时只要在setCo…

华为系统更新后安装了一个谷歌6月安全补丁的东西,然后之前写的调h5页面的部分就出现了问题,后台查过发现是Android端调h5页面时cookie没能带过去,导致了登录失败。于是对setCookie部分的代码进行了调试,发现单步运行时只要在setCookie部分时多等一会页面就可以正常打开,所以怀疑是异步的问题,先是在网上查了一通,说是这种情况可以让程序多睡会,但是这种解决方法并没有成功,而且觉得这么写代码有点别扭,于是就又查了一下设置Cookie部分的官方说明,发现 cookieManager.removeAllCookies其实是异步函数,之前写代码的人把他当同步用了,导致setCookie完成后,removeAllCookies函数才执行完的,把填进去的cookie又给移除了,所以导致了打开页面的失败。没安补丁之前,可能是cookie都带过去了,remove函数才执行完,安补丁后remov函数的运行速度提升了,但是具体原因不明,因为查不到补丁的内容,总之无论如何,异步函数当同步使用是万万不能的。

以下是改之前错误的代码,removeAllCookies被当成了同步函数使用

void fun(){
...
addCookies();
mWebview = (SystemWebView) appView.getView();
engine = (SystemWebViewEngine) appView.getEngine();
mWebview.setWebViewClient(new SystemWebViewClient(engine){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}

...
});
}


private void addCookies() {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
cookieManager.setAcceptCookie(true);
List<Cookie> cookieList = MainApp.getInstance().getGlobalState().getCookies();
for (Cookie cookie: cookieList){
String cookieString = cookie.name() + "=" + cookie.value();
cookieManager.setCookie(url, cookieString);
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.flush();
} else {
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().sync();
}
}
以下是改后的代码,removeAllCookies()有一个完成后会在当前线程调用的方法,利用他remove完成后在set就没问题了,而且addCookie()的调用被移进了onPageStarted之前,不然,之前那么写的话会先完成调用onPageStarted(),后完成addCookie()的调用,cookie依然不能设置成功。addCookie()不能放在onPageStarted中,应该加载完cookie再加载url,在loadUrl之前调用。

void fun(){
mWebview = (SystemWebView) appView.getView();
engine = (SystemWebViewEngine) appView.getEngine();
mWebview.setWebViewClient(new SystemWebViewClient(engine){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// addCookies();
super.onPageStarted(view, url, favicon);
}

...
});

}


private void addCookies() {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeAllCookies(new ValueCallback<Boolean>() {
@Override
public void onReceiveValue(Boolean value) {
setCookie(cookieManager);
}
});
}else{
cookieManager.removeAllCookie();
setCookie(cookieManager);
}
}

void setCookie( CookieManager cookieManager){

List<Cookie> cookieList = MainApp.getInstance().getGlobalState().getCookies();
for (Cookie cookie: cookieList){
String cookieString = cookie.name() + "=" + cookie.value();
cookieManager.setCookie(url, cookieString);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.flush();
} else {
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().sync();
}

loadUrl();
}
 这是removeAllCookies()方法的完整说明

/**
* Removes all cookies.
* <p>
* This method is asynchronous.
* If a {@link ValueCallback} is provided,
* {@link ValueCallback#onReceiveValue(T) onReceiveValue()} will be called on the current
* thread's {@link android.os.Looper} once the operation is complete.
* The value provided to the callback indicates whether any cookies were removed.
* You can pass {@code null} as the callback if you don't need to know when the operation
* completes or whether any cookies were removed, and in this case it is safe to call the
* method from a thread without a Looper.
* @param callback a callback which is executed when the cookies have been removed
*/
public abstract void removeAllCookies(ValueCallback<Boolean> callback);
 

转载于:https://www.cnblogs.com/yelanggu/p/10870187.html

http://www.jmfq.cn/news/5286835.html

相关文章:

  • 网站建设电销/自媒体营销推广方案
  • 连云港做网站最好/国内最好用的免费建站平台
  • 韩国风格网站模板/外贸独立站推广
  • 网站开发推广方案策划书/企业网站推广建议
  • saas 平台架构做网站/重庆seo推广外包
  • 百度公司网站排名怎么做/百度词条搜索排行
  • 免费cms建站系统有哪些/商业软文代写
  • 南充市建设局网站/流量平台有哪些
  • 2免费做网站/郑州网站推广公司哪家好
  • 做网站使用什么语言写/百度指数查询工具app
  • 辽宁平台网站建设平台/中小企业网站
  • c 做的web网站怎么发布/速推网
  • 国外做动运服装的网站/百度投放广告流程
  • .net 网站制作/百度推广客户端官方下载
  • 视频网站备案怎么做/宣传软文怎么写
  • 做网站用虚拟主机好吗/竞价托管哪家公司好
  • 苏州哪家做网站好/市场营销策划书范文5篇精选
  • 郑州做网站哪家好熊掌号/通过百度指数不能判断出
  • 滨湖区知名做网站价格/武威网站seo
  • 哈尔滨cms建站/佛山做优化的公司
  • 做动态网站的总结/网络营销公司怎么注册
  • 装修行业网站建设/平面设计主要做什么
  • 软件应用开发/成都seo培
  • 微信上做网站怎么做/上海aso优化公司
  • 自己建的网站如何做海外推广/绍兴seo优化
  • 叫別人做网站靠谱吗/网络营销推广网站
  • 三亚文明城市建设服务中心报名网站/黑帽seo工具
  • 网站制作需求文档/百度助手app免费下载
  • 网站建设推广语言/seo快速推广
  • 镇江企业网站排名优化/温州seo招聘