2013-04-19 23 views
10

Moja aplikacja po cichu ulega awarii (brak zamykania menu), gdy próbuję ustawić plik cookie na cookiemanager.Menedżer plików cookie powodujący śmiertelny sygnał 11

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; 
    }     
} 

Oto wszystko, co dostaję od 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) 

oto log nagrobek generowane: http://textuploader.com/?p=6&id=gPpJ

To nie prawo na CookieManager setCookie() linii (tj Loguję wiadomość przed a po tej linii wypisuje poprzednią wiadomość, ale nie tę, która została wysłana później).

Czy ktoś ma problem?

Odpowiedz

25

Dodaj CookieSyncManager.createInstance(context); przed wywołaniem CookieManager.

+1

ten działa dla mnie. –

+0

bez tego moja aplikacja uległa awarii na Jellybean – Fouad

0

Jeśli masz całkowitą pewność, że ta awaria została wywołana przez powyższy kod, oznacza to błąd oprogramowania układowego. Nie ma możliwości, aby aplikacja Android SDK mogła wywołać SIGSEGV.

Jeśli zdarzy się to na urządzeniu Nexus, na emulatorze lub na wielu urządzeniach, prawdopodobnie jest to błąd Androida. Zgłoś problem na numer http://b.android.com (jeśli nie ma go jeszcze), wskazując na ten problem i prawdopodobnie dołączając ten dziennik nagrobków.

Jeśli ma to miejsce tylko w niektórych określonych ustawieniach (np. Jedno urządzenie, jeden mod ROM), a nie innych, prawdopodobnie jest to coś szczególnego dla tego środowiska, w takim przypadku należy spróbować uzyskać pomoc z urządzenia lub modemu ROM producent.

Poza tym upewnij się, że cookie.getDomain() zwraca prawidłową wartość, ponieważ z mankietu wydaje się najbardziej prawdopodobnym winowajcą.

1

Spróbuj utworzyć WebView za pomocą metody onCreate() i zniszcz ją. WebView tworzy pewien "pomost" pomiędzy ContentManager i WebKit. Niektóre rzeczy takie jak:

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

    setContentView(R.layout.activity_layout); 
    WebView web = new WebView(this); 
    web.destroy(); 
} 
Powiązane problemy