最近项目遇到一个新需求,H5的登录态跟APP的登录态分开,所以需要记住H5的登录状态,但是我的webview app已退出再次打开,cookie就被清空(这个找了很久也没会找到原因)。我的解决方法是:获取H5的cookie,保存在本地数据库,·再次进入webview判断是否有Cookie,如果没有,从本地数据库取出Cookie并设置给webview。
webview管理cookie的机制:将域名和cookie存在数据库中,当webview访问该域下面的网页时就会将该域名相关的cookie带上。所以我们的本地数据库应该将域名和cookie的key做为主键,从H5获取Cookie并解析出键值对存到本地数据库,重新打开webview时如果没有cookie,从本地数据库中取出相应域名的cookie设置给webview。
获取H5cookie并保存的代码如下:
@Override
public void onPageFinished(WebView view, String url) {
LogUtil.i(TAG, "onPageFinished:" + url);
CookieSyncManager.createInstance(mActivity);
CookieManager cookieManager = CookieManager.getInstance();
String cookie = cookieManager.getCookie(url);//从H5获取cookie
LogUtil.i(TAG, "onPageFinished cookie :" + cookie)