CookieManager和CookieSyncManager不将Cookie同步到ICS中的webview(适用于所有以前的API级别)

时间:2012-03-14 09:12:52

标签: android cookies android-webview android-4.0-ice-cream-sandwich

背景

我通过我的应用程序获取cookie并通过向http发出请求在内部使用它们。用户可以在任何给定时间切换到webview,在这种情况下,我将cookie同步/注入webView

使用CookieSyncManager将Cookie同步到网页视图的代码:

CookieSyncManager.createInstance(a);
CookieManager cm = CookieManager.getInstance();
cm.setCookie(domain, cookieName + "=" + cookieValue);
CookieSyncManager.getInstance().sync();

这适用于所有 API级别,但 API 15+(Android 4.0,Ice Cream Sandwich)除外。不推荐使用CookieManager API。

导致此问题的原因是什么?是否有解决方法?

4 个答案:

答案 0 :(得分:4)

我最近遇到了同样的问题,我发现这是我的错误。问题是我设置域的方式(但它一直工作到API 15)。尝试在域前加上点:" .company.com"而不是" company.com"。

答案 1 :(得分:3)

您可以尝试使用Apache DefaultHttpClient为您完成这项工作,我认为它不会在冰淇淋三明治中被更改。

我发现了这个sample,但这里还有更多

答案 2 :(得分:0)

我没有从客户端注入cookie,但我找到了ICS cookie没有保存。

一个解决方法是 使用本地存储而不是cookie。您不需要cookie同步管理器。 这适用于ics和v2 + android。

在我的情况下,我没有域名,所以上述内容似乎并不相关 - 我在应用程序的资产文件夹中使用了本地html文件。

这适用于ics和v2 android

享受

的java

// java
WebSettings webSettings = myWebView.getSettings();
webSettings.setDomStorageEnabled(true);   // localStorage


// e.g., if your package is www.myapp.whatever;
webSettings.setDatabasePath("/data/data/www.myapp.whatever/databases/");

HTML

// javascript

function createCookie(name,value,days,path) {
    localStorage.setItem(name,value);
}

function readCookie(name) {
    return localStorage.getItem(name);
}

答案 3 :(得分:0)

以下是您的回答:In ICs, can`t get cookie

它导致问题的域名。

对于15岁以上的所有版本,你必须使用**。** domain.com,而不是domain.com。