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();
}