Android 同步cookie到webView,区分系统版本

当app原生项目登录时,跳转到h5界面需要将登录状态同步到h5里,这时需要将cookie设置给webview同步登录状态。具体代码如下:

1 设置cookie前 设置支持js脚本

  WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);// 支持javaScript脚本
    webSettings.setDomStorageEnabled(true);
    webSettings.setBuiltInZoomControls(true);

2 设置同步cookie

   public void synCookies(final String url) {
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    cookieManager.removeAllCookie();//移除之前所有的cookie
    // 获取自己存下的cookie  
    String[] cookies = ReaderApplication.getInstance().getHttpCookies().split(";");
    LogUtil.logd("cookie", "length=" + cookies.length);
    for (int i = 0; i < cookies.length; i++) {
      String cookie = cookies[i] + ";Max-Age=93600;Domain=.ruochu.com;Path=/";
      LogUtil.logd("cookie", cookie);
      cookieManager.setCookie(url, cookie);
    }
    // 5.0以上 刷新cookie
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
      cookieManager.flush();
      SystemClock.sleep(100);
    } else { // 5.0以下
      CookieSyncManager.createInstance(this.getApplicationContext());
      CookieSyncManager.getInstance().sync();
    }
    Log.e("flag", "------------------------同步---getCookie:" + cookieManager.getCookie(url));
  }

3 请求url

 webView.loadUrl(this.getLoadUrl());

注意点:

1 设置cookie 前移除之前的  

 cookieManager.removeAllCookie();//移除之前所有的cookie
2  拼接cookie 域名时 要对应请求的url里的域名  假设请求是  https://mp.csdn.net/postedit 
cookies[i] + ";Max-Age=93600;Domain=.csdn.net;Path=/";

Domain后设置 和请求url一样的域名   不过不用包含服务器名   即Demain=.csdn.net即可

3 设置多条cookie时  要  cookieManager.setCookie(url, cookie);    set多次,,不能set一次用;分开,否则会检测到;认为设置完毕,导致设置cookie失效

4 同步cookie 时 区别安卓版本



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值