2013-01-17 9 views
9

La mia app utilizza ACRA per la segnalazione degli errori e ho ricevuto un paio di rapporti dal mio dispositivo con l'errore: Può utilizzare solo 16 bit più bassi per requestCode. Google mostra questo errore che si verifica quando si utilizza startActivityForResult, ma ho cercato il mio codice alcune volte e non lo sto chiamando da nessuna parte.Eccezione ACRA Solo 16 bit più bassi per requestCode

Sono abbastanza confuso e mi chiedo come questo abbia un impatto sugli utenti (cosa abbastanza interessante, la beta di Crash Reports non mostra eventuali errori a tutti).

Chiunque altro eseguito in questo?

java.lang.RuntimeException: Unable to resume activity {com.myapp/com.myapp.MyActivity}: 
java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:957) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3683) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode 
at android.support.v4.app.g.startActivityForResult(SourceFile:690) 

Qualcuno può aiutarmi in questo?

+1

possibile duplicato di [Eccezione con Android quando si utilizza ACRA] (http://stackoverflow.com/questions/14378002/exception-with-android-when-using-acra) –

risposta

14

RequestCodes può essere un massimo di 0xffff (65535). Così si sono probabilmente chiamando startActivityForResult(intent, REQUEST_CODE); e REQUEST_CODE è superiore a 65535.

Solutions:

  • fa la richiesta di codice più piccolo
  • esclusione startActivityForResult per gestire i codici di richiesta più grandi (che sarà per lo più verso il basso per un hack che tronca o qualche altra manipolazione per spingere il codice di richiesta entro i limiti) Nel linked answer (dall'alto) c'è il codice in startActivityForResult che è il problema che stai incontrando da Raghav Sood.
+1

e il modo più semplice di "fare richiesta codice più piccolo "sarebbe semplicemente aggiungere' & 0xFFFF' al codice "troppo lungo" –

+2

(E ASSICURI CHE QUESTO CODICE È UN VALORE POSITIVO) –