Подтвердить что ты не робот

Менеджер файлов cookie, вызывающий фатальный сигнал 11

Мое приложение тихо вылетает (нет всплывающего окна с силовым закрытием), когда я пытаюсь установить cookie на cookiemanager.

mHttpClient.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false);
HttpGet http_get = new HttpGet(url); 
HttpResponse response = mHttpClient.execute(http_get);

for(Cookie cookie : mHttpClient.getCookieStore().getCookies()) {

    Log.d(AppPreferences.TESTTAG,"cookie =  " + cookie.getName());
    if(cookie.getName().equals("SACSID") || cookie.getName().equals("ACSID"))
    {
        response.getEntity().consumeContent();
        String cookieString = cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain();  
        CookieManager.getInstance().setCookie(cookie.getDomain(), cookieString); //**crashes here**
        return true;
    }                   
}

Здесь все, что я получаю от logcat

04-19 22:51:35.277: W/dalvikvm(16704): Invalid indirect reference 0x414bb040 in decodeIndirectRef
04-19 22:51:35.277: E/dalvikvm(16704): VM aborting
04-19 22:51:35.281: A/libc(16704): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 16754 (AsyncTask #1)

Здесь выведен журнал с надписью: http://textuploader.com/?p=6&id=gPpJ

Он не работает прямо в строке SetCookie() в CookieManager (т.е. я регистрирую сообщение до и после этой строки, оно печатает сообщение перед этим, но не после него)

Кто-нибудь сталкивается с этой проблемой?

4b9b3361

Ответ 1

Добавить CookieSyncManager.createInstance(context); перед вызовом CookieManager.

Ответ 2

Попробуйте создать WebView в методе onCreate() и уничтожить его. WebView создает некоторый "мост" между ContentManager и WebKit. Что-то вроде этого:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_layout);
    WebView web = new WebView(this);
    web.destroy();
}

Ответ 3

Если вы полностью уверены, что этот сбой вызван кодом, который у вас выше, это представляет собой ошибку прошивки. Нет никакого способа, чтобы приложение Android SDK могло запускать SIGSEGV.

Если это происходит на устройстве Nexus, на эмуляторе или на нескольких устройствах, это, вероятно, ошибка Android. Измените проблему на http://b.android.com (если она уже не указана), указывая на эту проблему и, возможно, прикрепляя этот журнал надгробия.

Если это происходит только в некоторых конкретных настройках (например, одном устройстве, одном модуле ROM), а не в других, это, вероятно, что-то особенное для этой среды, и в этом случае вам следует попытаться получить помощь от устройства или устройства модема ROM.

Кроме того, убедитесь, что cookie.getDomain() возвращает допустимое значение, как, например, от манжеты, которая кажется наиболее вероятной виновницей.