最低限必要な 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();
この Cookie が CookieManager でも利用できるかどうかを確認します。
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);