2013-04-19 13 views
10

La mia app si blocca silenziosamente (nessun popup di chiusura forzata) quando tento di impostare un cookie sul cookiemanager.Gestione cookie che causa un segnale fatale 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; 
    }     
} 

Qui è tutto quello che sto ricevendo da 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) 

Ecco il registro lapide generato: http://textuploader.com/?p=6&id=gPpJ

Non riesce proprio sulla linea CookieManager setCookie() (vale a dire annoto un messaggio prima e dopo quella riga stampa il messaggio precedente ma non quello successivo)

Chiunque corri in questo problema?

risposta

25

Aggiungere CookieSyncManager.createInstance(context); prima di chiamare CookieManager.

+1

questo funziona per me. –

+0

senza che la mia app si bloccasse su Jellybean – Fouad

0

Se si è completamente certi che questo arresto venga attivato dal codice sopra riportato, ciò rappresenta un errore del firmware. In nessun modo un'app Android SDK dovrebbe essere in grado di attivare un SIGSEGV.

Se questo si verifica su un dispositivo Nexus, sull'emulatore o su più dispositivi, è probabilmente un bug di Android. Invia un problema al numero http://b.android.com (se non ce ne sembra già uno), indicando questo problema e probabilmente allegando il registro tombstone.

Se questo si verifica solo in alcune impostazioni specifiche (ad esempio, un dispositivo, un mod ROM) e non altri, è probabilmente qualcosa di particolare per quell'ambiente, nel qual caso dovresti cercare di ottenere aiuto dal dispositivo o dalla mod ROM caffè.

Oltre a ciò, assicurarsi che cookie.getDomain() restituisca un valore valido, poiché, a prima vista, sembra il colpevole più probabile.

1

Provare a creare WebView nel metodo onCreate() e distruggerlo. WebView crea un "ponte" tra ContentManager e WebKit. Una cosa del genere:

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

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