首页 > 技术文章 > Android WebView 保存cookie 最简单方式

android-dangdang 2021-08-05 14:07 原文

//初始化webView 时调用
/**
* 设置 cookies
* @param cookiesPath 请求地址
*/
public void setCookies(String cookiesPath) {
Map<String, String> cookieMap = new HashMap<>();
String cookie = getSharedPreferences("cookie", Context.MODE_PRIVATE).getString("cookies", "");// 从SharedPreferences中获取整个Cookie串
if (!TextUtils.isEmpty(cookie)) {
String[] cookieArray = cookie.split(";");// 多个Cookie是使用分号分隔的
for (int i = 0; i < cookieArray.length; i++) {
int position = cookieArray[i].indexOf("=");// 在Cookie中键值使用等号分隔
String cookieName = cookieArray[i].substring(0, position);// 获取键
String cookieValue = cookieArray[i].substring(position + 1);// 获取值

String value = cookieName + "=" + cookieValue;// 键值对拼接成 value
Log.i("cookie", value);
CookieManager.getInstance().setCookie(getDomain(cookiesPath), value);// 设置 Cookie
}
}
}
//stop 生命周期调用
/**
* 保存 Cookie
*/
private void saveCookie() {
CookieManager cookieManager = CookieManager.getInstance();
String cookieStr = cookieManager.getCookie(getDomain(getString(R.string.app_url)));
SharedPreferences preferences = getSharedPreferences("cookie", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("cookies", cookieStr);
editor.commit();
}

推荐阅读