Android WebView保存登陆cookie

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenzujie/article/details/50755870

最近给H5部门做一个app,需求比较简单,就是用webview直接loadUrl去加载网页,但做的时候遇到一个小需求,网上找的答案都不是很让人满意,感觉好多复制黏贴,所以想想,还是自己写一篇吧。
遇到的需求是H5网页里有让用户登陆的界面,用户登陆成功后,退出app,下次要能记住登陆状态,不需要再次登陆,简单说就是要在app本地保存登陆cookie。
没做过这方面需求,网上找找资料,发现大部分讲的都是使用native方式登陆然后把DefaultHttpClient的cookie传递给webview,与我的需求不大符合,我这里登陆啥的也是H5实现。
现在介绍下怎么保存webview里面登陆的cookie。
假设有如下两个地址作为登陆的url和登陆后的url

public static final String ENTRANCE_URL_LOGIN = "http://XXXX/login"; //登陆url

    public static final String ENTRANCE_URL_HOME = "http://XXXX/main"; //登陆后调整的url

然后在activity的onCreate里面

CookieSyncManager.createInstance(this);
        CookieManager cookieManager = CookieManager.getInstance();
        String CookieStr = cookieManager.getCookie(Constants.ENTRANCE_URL_HOME); //获取cookie
        Log.d(TAG, "onCreate cookie:" + CookieStr);
        WebSettings webSettings = mWebView.getSettings();
        // 开启Javascript脚本
        webSettings.setJavaScriptEnabled(true);
        if(TextUtils.isEmpty(CookieStr)) {
            mWebView.loadUrl(Constants.ENTRANCE_URL_LOGIN);
        } else{
            mWebView.loadUrl(Constants.ENTRANCE_URL_HOME);
        }

稍微解释下上面的代码,先是获取CookieManager对象,这个对象就是用来做存取cookie操作的,用户一进入activity判断是否有登陆成功的cookie,有的话我们就可以直接访问登陆后的url,否则就放访问登陆url。
逻辑就这么简单,通过判断有无cookie选择访问的url,不知道为啥网络上的文章不少,但没怎么讲到重点。
这里再顺便讲下当用户退出登陆的时候需要忘记cookie,方法也很简单。

CookieManager cookieManager = CookieManager.getInstance();
 cookieManager.removeAllCookie();
阅读更多
换一批

没有更多推荐了,返回首页