背景
我通过我的应用程序获取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。
导致此问题的原因是什么?是否有解决方法?
答案 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)