だから... ... を生き続けるためにシングルトンインスタンスを使用していない場合、は、cookiestoreを使用したクッキーの情報を利用したいですプリミティブCookieStore、私はAndroid Asynchronous Http Clientの実装を見つけました。素晴らしいPersistentCookieStoreが含まれています。 は単に私のプロジェクトにjarファイルを追加し、次のようにそれを使用:
PersistentCookieStore cookieStore = new PersistentCookieStore(context);
DefaultHttpClient mClient = new DefaultHttpClient();
mClient.setCookieStore(cookieStore);
をし、それはそれです!クッキーは保存され、アプリケーションが再び開いたときに再利用されます。
ありがとうございました。あなたは少なくとも1人の人間を幸せにしました。
自分のプリミティブの実装に興味のある人は(ということでも動作します)ここにある場合:
package com.pinhassi.android.utilslib;
import java.util.Date;
import java.util.List;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.cookie.BasicClientCookie;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class MyPersistentCookieStore extends BasicCookieStore {
private static final String COOKIES_LIST = "CookiesList";
private static final String COOKIES_NAMES = "CookiesNames";
private Context mContext;
/**
*
*/
public MyPersistentCookieStore(Context context) {
super();
mContext = context;
load();
}
@Override
public synchronized void clear(){
super.clear();
save();
}
@Override
public synchronized boolean clearExpired(Date date){
boolean res = super.clearExpired(date);
save();
return res;
}
@Override
public synchronized void addCookie(Cookie cookie){
super.addCookie(cookie);
save();
}
@Override
public synchronized void addCookies(Cookie[] cookie){
super.addCookies(cookie);
save();
}
public synchronized void save()
{
Editor editor = mContext.getSharedPreferences(COOKIES_LIST, Context.MODE_PRIVATE).edit();
editor.clear();
List <Cookie> cookies = this.getCookies();
StringBuilder sb = new StringBuilder();
for (Cookie cookie : cookies)
{
editor.putString(cookie.getName(),cookie.getValue());
sb.append(cookie.getName()+";");
}
editor.putString(COOKIES_NAMES,sb.toString());
editor.commit();
}
public synchronized void load()
{
SharedPreferences prefs = mContext.getSharedPreferences(COOKIES_LIST, Context.MODE_PRIVATE);
String [] cookies = prefs.getString(COOKIES_NAMES,"").split(";");
for (String cookieName : cookies){
String cookieValue = prefs.getString(cookieName, null);
if (cookieValue!=null)
super.addCookie(new BasicClientCookie(cookieName,cookieValue));
}
}
}
私はDefaultHttpClient(上記のコードでmClient)は、独自のは、cookiestoreを持っていることがわかります。次にクッキーを保存し、次にクッキーを作成するにはどうすればいいですか? –
なぜそれをする必要がありますか?次回は新しいCookieを使用します。しかし、まだそれを格納する必要がある場合、私はあなたにそれを行う方法を教えた例のコードを見ることができます。 – Dayerman
私はクッキーに保存できるようにする必要があるので、ユーザーがアプリケーションを終了して再度開いたとしても、サーバーへのセッションがあるかどうかを知ることができます(送信したリンク上でそれを行う方法はできません)。同様のことがfacebook APIで行われ、Androidブラウザを使用しているだけです。私は解決策を見つけて答えとしてここに発表しました。とにかく助けてくれてありがとう! –