Android中WebView加载网页,有时候需要通过cookie向网页传递信息,如免登录保存登录状态等
设置cookie
在调用 loadUrl(url);
前一句调用以下synCookies()方法进行 Cookie 同步操作。
/**
* 给WebView同步Cookie
*
* @param context 上下文
* @param url 可以使用[domain][host]
*/
public void synCookies(Context context,Stirng url) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.createInstance(context);
}
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);// 允许接受 Cookie
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeSessionCookie();// 移除
} else {
cookieManager.removeSessionCookies(null);// 移除
}
List<HttpCookie> cookies = UserModle.getInstance(this).getCookies();//获取本地保存的cookie
for (int i = 0; i < cookies.size(); i++) {
HttpCookie cookie = cookies.get(i);
String value = cookie.getName() + "=" + cookie.getValue();
cookieManager.setCookie(url, value);
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.getInstance().sync();
} else {
cookieManager.flush();
}
}
webview同步cookie位置
项目中使用 WebView 其实会自动将 Cookie 保存在本地数据库中。保存是路径为 data/data/package_name/app_WebView/Cookies
虽然不是 .db
结尾的,实际就是一个 .db
文件
注意:如果使用腾讯X5内核,CookieSyncManager、CookieManager等引用X5的类,如图