Android WebView保存登陆cookie

最近给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();
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值