Android Camera Intent уничтожает сессию CookieManager

По какой-то причине CookieManager иногда теряет переменную сеанса, когда я открываю намерение камеры и возвращаюсь из него. Это не происходит все время, но это случается часто. Я могу подтвердить, что переменная сеанса теряется, потому что мой сервер веб-сервера жалуется на это.

Это мой код, который я помещаю в свой MainApplication, расширяет класс Application в методе onCreate().

CookieManager cookieManager = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);

Буду признателен, если кто-нибудь сможет дать мне некоторое представление о том, что происходит.

Обновить:

Я пытался сохранить куки, используя следующий код, но он не работал!

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



}

Спасибо!

0 ответов

Другие вопросы по тегам