Android摄像头意图破坏CookieManager会话

Android摄像头意图破坏CookieManager会话,android,android-intent,session-cookies,cookiemanager,android-cookiemanager,Android,Android Intent,Session Cookies,Cookiemanager,Android Cookiemanager,出于某种原因,当我打开相机并从中返回时,CookieManager有时会丢失会话变量。这种情况并非总是发生,但确实经常发生。我可以确认会话变量正在丢失,因为我的后端web服务器正在对此进行投诉 这是我在onCreate()方法中的MainApplication extends应用程序类上编写的代码 如果有人能让我了解一下正在发生的事情,我将不胜感激 更新: 我尝试使用以下代码存储cookies,但它不起作用 public static void GetCookies(Context contex

出于某种原因,当我打开相机并从中返回时,CookieManager有时会丢失会话变量。这种情况并非总是发生,但确实经常发生。我可以确认会话变量正在丢失,因为我的后端web服务器正在对此进行投诉

这是我在onCreate()方法中的MainApplication extends应用程序类上编写的代码

如果有人能让我了解一下正在发生的事情,我将不胜感激

更新:

我尝试使用以下代码存储cookies,但它不起作用

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



}
publicstaticvoidgetcookies(上下文){
SharedReferences prefs=QuickFunctions.getPreferences(上下文);
CookieManager ckManager=(CookieManager)CookieMhandler.getDefault();
CookieStore ckStore=ckManager.getCookieStore();
List-uriList=ckStore.getURIs();
List cks=ckStore.getCookies();
布尔sessionExists=false;
for(URI:uriList){
if(uri.getHost()包含(“testsite.ca”)){
sessionExists=true;
}
}
if(sessionExists==false){
if(prefs.contains(“sessionURI”)&&prefs.contains(“cookieName”)&&prefs.contains(“cookieValue”)){
uriintuchuri=URI.create(prefs.getString(“sessionURI”、“defaultString”);
HttpCookie ck=newhttpcookie(prefs.getString(“cookieName”、“defaultString”)、prefs.getString(“cookieValue”、“defaultString”);
添加(intuchURI,ck);
}
}
}
公共静态void SaveCookies(上下文){
SharedReferences prefs=QuickFunctions.getPreferences(上下文);
Editor edit=prefs.edit();
CookieManager ckManager=(CookieManager)CookieMhandler.getDefault();
CookieStore ckStore=ckManager.getCookieStore();
List-uriList=ckStore.getURIs();
for(URI:uriList){
if(uri.getHost()包含(“testsite.ca”)){
edit.putString(“sessionURI”,uri.toString());
List cks=ckStore.get(uri);
用于(httpck:cks){
if(ck.toString()包含(“sessionid”)){
edit.putString(“cookieName”,ck.getName());
edit.putString(“cookieValue”,ck.getValue());
}
}
}
}
edit.commit();
}

谢谢

如果对象位于“活动”上,是否将其存储在saveInstance()上?我怀疑你的对象在应用程序的生命周期中无法生存,这在新的意图被激发后变得显而易见。不,我没有。我举了一个例子,上面说我只需要添加这些行。我现在要在谷歌上再搜索一些。我好像什么也找不到。你能为我提供一个资源来解释需要做什么吗?
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();



}