【发布时间】:2013-02-06 15:47:48
【问题描述】:
我制作了一个最低要求 API 8 的 Android 应用。 用户在我的后端使用 cookie 进行身份验证。这适用于所有具有 api 级别 9 或更高级别的设备。 Cookie 使用 CookieManager 保存:
CookieManager cManager = CookieManager.getInstance();
CookieSyncManager.createInstance(LauncherApplication.getAppContext());
cManager.setAcceptCookie(true);
cManager.setCookie(".xxxxxxxx.xx", "MobileGuid=" + guid);
CookieSyncManager.getInstance().sync();
我用 CookieManager 检查这个 Cookie 是否也可用:
public static boolean hasCookie(){
CookieManager cManager = CookieManager.getInstance();
String cookieString = cManager.getCookie(".xxxxxxx.xx");
if(cookieString != null && cookieString.contains("MobileGuid")){
return true;
}
return false;
}
这始终返回 true,但如果 Android 版本高于 2.2,则 Cookie 仅在 WebView 中可用。 (我用phpinfo检查了这个)
我的 WebView 配置如下所示:
String databasePath = LauncherApplication.getAppContext().getApplicationContext().getDir("database",
Context.MODE_PRIVATE).getPath();
WebSettings mainWebSettings = mainWebView.getSettings();
mainWebSettings.setJavaScriptEnabled(true);
mainWebSettings.setAppCacheEnabled(true);
mainWebSettings.setDatabaseEnabled(true);
mainWebSettings.setDomStorageEnabled(true);
mainWebSettings.setDatabasePath(databasePath);
【问题讨论】:
标签: android cookies webview cookiemanager