Исключение с Android при использовании ACRA

Мое приложение использует ACRA для отчетов об ошибках, и у меня есть несколько отчетов с моего устройства с ошибкой: можно использовать только младшие 16 бит для requestCode. Google показывает, что эта ошибка возникает при использовании startActivityForResult, но я искал свой код несколько раз, и я никуда не звоню.

Я довольно запутался, и мне интересно, как это влияет на пользователей (что интересно, бета-версия Crash Reports вообще не показывает никаких ошибок).

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

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)
at com.android.e.a.a(Unknown Source)
at com.android.e.e.a(Unknown Source)
at com.android.o.e.a(Unknown Source)
at com.android.o.b.a(Unknown Source)
at com.android.framework.context.d.a(Unknown Source)
at com.android.framework.context.d.onResume(Unknown Source)
at com.android.Kiwi.onResume(Unknown Source)
at com.myapp.MyActivity.onResume(SourceFile)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
at android.app.Activity.performResume(Activity.java:3832)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
... 10 more
java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
at android.support.v4.app.g.startActivityForResult(SourceFile:690)
at com.android.e.a.a(Unknown Source)
at com.android.e.e.a(Unknown Source)
at com.android.o.e.a(Unknown Source)
at com.android.o.b.a(Unknown Source)
at com.android.framework.context.d.a(Unknown Source)
at com.android.framework.context.d.onResume(Unknown Source)
at com.android.Kiwi.onResume(Unknown Source)
at com.myapp.MyActivity.onResume(SourceFile)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
at android.app.Activity.performResume(Activity.java:3832)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
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)

Может ли кто-нибудь помочь мне в этом?


person user1980076    schedule 17.01.2013    source источник
comment
Вы используете карты Google версии 2? Я считаю, что это ошибка, связанная с этим.   -  person Kenny C    schedule 28.02.2013


Ответы (1)


Из исходного кода FragmentActivity:

/**
* Modifies the standard behavior to allow results to be delivered to fragments.
* This imposes a restriction that requestCode be <= 0xffff.
*/
@Override
public void startActivityForResult(Intent intent, int requestCode) {
    if (requestCode != -1 && (requestCode&0xffff0000) != 0) {
        throw new IllegalArgumentException("Can only use lower 16 bits for requestCode");
    }
    super.startActivityForResult(intent, requestCode);
}

Кажется, что ваш код запроса может быть только до 0xffff, что означает 65535 для нас, одержимых людей по основанию 10.

person Raghav Sood    schedule 17.01.2013
comment
Насколько я понимаю, вы используете ACRA в режиме диалогового уведомления. Это заставляет ACRA вызывать startActivityForResult(), что приводит к вашему исключению. - person Raghav Sood; 17.01.2013
comment
Спасибо. Я проверю это. - person user1980076; 17.01.2013
comment
Гм, ACRA никогда не вызывает #startActivityForResult. По крайней мере, не в ACRA 4.4.0 и более поздних версиях. Но если вы покажете больше трассировки стека выше, мы увидим настоящего виновника. Похоже, это не имеет ничего общего с ACRA. - person William; 18.01.2013
comment
@William Тогда я должен ошибаться. - person Raghav Sood; 18.01.2013
comment
Я добавил полную трассировку стека сейчас - person user1980076; 18.01.2013
comment
Привет Уильям, Не могли бы вы помочь мне в этом? - person user1980076; 19.01.2013