CookieSyncManager.createInstance(_context);
CookieManager manager = CookieManager.getInstance();
manager.setAcceptCookie(true);
// manager.removeSessionCookie();
StringBuilder builder = null;
for (HttpCookie cookie : allCookies) {
builder = new StringBuilder();
builder.append(cookie.getName());
builder.append("=");
builder.append(cookie.getValue());
builder.append("; path=");
builder.append(cookie.getPath());
builder.append("; domain=");
builder.append(cookie.getDomain());
manager.setCookie(XidibuyConstants.DOMAIN_XIDIBUY,
builder.toString());
Log.e(TAG, "cookie:" + builder);
}
CookieSyncManager.getInstance().sync();

注意:

1.// manager.removeSessionCookie(); 在某些android版本中会导致cookie保存失败。已知4.4没有问题,4.3有问题。

2.服务器发送cookie,有时候希望发送一些值为deleted的cookie来覆盖已存在的cookie。

但是有些服务器为了节省时间,会将发送过来的cookie只包含key和value,不包含path和domain。这种情况下,webview会认为是两个cookie,不会覆盖已存在的cookie。

webview保存cookie时,需要覆盖的必需是key,path和domain都相同才会覆盖。

所以一定要服务器发送包含key,path,domain的cookie否则在保存时就需要手动处理。