AndroidでCookieの利用
Cookieは、Webサイト側がブラウザを利用している端末に一時的にデータを保存する仕組み
端末へcookieを設定すれば
設定した端末のブラウザからWebサイトへアクセスしたときに
自動的にCookieの値を送信する
これは、ログイン情報の保持に使われる
AndroidのWebViewでもCookieが使えるので
これを使って自動ログインの仕組みの実装
アプリ内ブラウザか、それともそれ以外のブラウザかをサーバーで判定できる
Cookieを使うには
アプリの開始直後に
CookieSyncManagerクラスの
createInstance()を呼び出す
そして、
onResumeハンドラ
onPauseハンドラ
で
startSync()
stopSync()
を記述する
そして、CookieManagerクラスの
setAcceptCookie()を呼び出せば
Cookieの利用ができる
まず、メンバ変数の宣言
private WebView mWebView;
次に、onCreate()の中へCookieを使うための設定
CookieSyncManager.createInstance(getApplicationContext()); CookieManager cm = CookieManager.getInstance(); //Cookie利用開始 cm.setAcceptCookie(true); //期限切れのCookie削除 cm.removeExpiredCookie(); setCookie();
途中に書いた resumeExpiredCookie()は
期限切れのCookieを削除するメソッド
次に、onResume()へ
startSync()を追加
@Override protected void onResume(){ super.onResume(); CookieSyncManager.getInstance().startSync(); }
onPause()には、stopSync()を追加
@Override protected void onPause(){ super.onPause(); CookieSyncManager.getInstance().stopSync(); }
次に、Cookieの設定
独自のCookieを設定するには
CookieManagerクラスのsetCookie()を使う
setCookie()の第1引数にはURL
第2引数には、Cookieとして設定する文字列を指定する
まずは、setCookie()の実装
private void setCookie(){ CookieManager cm = CookieManager.getInstance(); BasicClientCookie cookie = getSampleCookie(); cm.setCookie(cookie.getDomain(), toHeaderCookie(cookie)); CookieSyncManager.getInstance().Sync(); }
サンプルのCookieのURLを作成
private BasicClientCookie getSampleCookie(){ BasicClientCookie cookie = new BasicClientCookie("CookieSampleKey", "CookieSampleValue"); cookie.setDomain("サーバーのドメイン"); cookie.setPath("/"); return cookie; }
そして、Cookieの値の作成
private String toHeaderCookie(BasicClientCookiec){ StringBuilder sb = new StringBuilder(); sb.append(c.getName()).append("=").append(c.getValue()).append(";"); sb.append("domain").append("=").append(c.getDomain()).append(";"); sb.append("path").append("=").append(c.getPath()).append(";"); return sb.toString(); }