Android WebView设置cookie

   场景: Android原生和H5的混合开发中,登录维护在原生,某些详情页面嵌套Webview。

              

   问题:原生登录之后将cookie存起来,在 WebView.loadUrl("");之前设置cookie,针对每个项目cookie它的格式都不相同。

   如果你不知道你们url的cookie格式的话,你可以将url复制到pc端的浏览器中,打开开发者模式如下(以Safari为例):

   然后点击“开发”-------“显示javascript控制台”-----“网络”----“info”,然后你就能看见响音里面一堆字符串:

Set-Cookie: SESSION=Njc3NThmOWItOTEyNy00YWYxLThhMzMtNGQ5OTlkOWFjMjlj; Max-Age=2592000; Expires=Wed, 27 Nov 2019 17:58:16 +0800; Domain=elib.apabi.com; Path=/; HttpOnly; SameSite=Lax

然后呢,只需要将Njc3NThmOWItOTEyNy00YWYxLThhMzMtNGQ5OTlkOWFjMjlj 这个换成自己之前存起来的cookie换掉就好了,具体方法(某些参数其实不需要比如时间,我这里面就没拼接时间)。

syncCookie(“你的Url”);
mWebView.loadUrl(“你的Url”);

 

======================================================================================

 private void syncCookie (String url) {
        CookieSyncManager.createInstance(mContext);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        String cookie = MySharedPreferences.getString(mContext, "session", null);

//        SESSION=NjI3NzMxMWYtNTQzNS00NzE5LWI3ZTgtNmZlNWE2MjNhNDFk; Max-Age=2592000; Expires=Wed, 27 Nov 2019 11:15:04 +0800; Domain=elib.apabi.com; Path=/; HttpOnly; SameSite=Lax

        String cookieString = "SESSION" + "=" + cookie+
                "; Max-Age=" + "2592000" +
                "; Domain=" +"172.18.89.129"+"; Path=/; HttpOnly; SameSite=Lax";

        cookieManager.setCookie(url, cookieString);

        CookieSyncManager.getInstance().sync();

        String cookies = cookieManager.getCookie(url);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            cookieManager.flush();
        } else {
            CookieSyncManager.getInstance().sync();
        }
    }