何らかの理由で、カメラ インテントを開いてそこから戻ると、CookieManager がセッション変数を失うことがあります。これは常に発生するわけではありませんが、頻繁に発生します。バックエンド Web サーバーがエラーを出しているため、セッション変数が失われていることを確認できます。
これは、onCreate() メソッドで MainApplication extends Application クラスに配置したコードです。
CookieManager cookieManager = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);
何が起こっているのかについて誰かが私に洞察を与えることができれば幸いです。
アップデート:
次のコードを使用して Cookie を保存しようとしましたが、うまくいきませんでした。
public static void GetCookies(Context context){
SharedPreferences prefs = QuickFunctions.getPreferences(context);
CookieManager ckManager = (CookieManager) CookieHandler.getDefault();
CookieStore ckStore = ckManager.getCookieStore();
List<URI> uriList=ckStore.getURIs();
List<HttpCookie> cks = ckStore.getCookies();
boolean sessionExists=false;
for (URI uri : uriList) {
if (uri.getHost().contains("testsite.ca")){
sessionExists=true;
}
}
if (sessionExists==false){
if (prefs.contains("sessionURI") && prefs.contains("cookieName") && prefs.contains("cookieValue")){
URI intuchURI = URI.create(prefs.getString("sessionURI", "defaultString"));
HttpCookie ck = new HttpCookie( prefs.getString("cookieName", "defaultString"), prefs.getString("cookieValue", "defaultString"));
ckStore.add(intuchURI,ck);
}
}
}
public static void SaveCookies(Context context){
SharedPreferences prefs = QuickFunctions.getPreferences(context);
Editor edit=prefs.edit();
CookieManager ckManager = (CookieManager) CookieHandler.getDefault();
CookieStore ckStore = ckManager.getCookieStore();
List<URI> uriList=ckStore.getURIs();
for (URI uri : uriList) {
if (uri.getHost().contains("testsite.ca")){
edit.putString("sessionURI", uri.toString());
List<HttpCookie> cks = ckStore.get(uri);
for (HttpCookie ck : cks) {
if (ck.toString().contains("sessionid")){
edit.putString("cookieName",ck.getName());
edit.putString("cookieValue",ck.getValue());
}
}
}
}
edit.commit();
}
ありがとう!