ACRA异常只能使用低16位的requestCode

use*_*076 9 android android-activity acra

我的应用程序使用ACRA进行错误报告,我的设备中有一些报告有错误:只能使用低16位的requestCode ..谷歌显示使用startActivityForResult时发生此错误,但我搜索了我的代码几次,我不会在任何地方打电话.

我很困惑,我想知道这是如何影响用户的(有趣的是,Crash Reports beta根本没有显示任何错误).

其他人遇到这个?

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)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

xba*_*esx 14

RequestCodes只能是0xffff(65535)的最大值.所以你可能正在打电话startActivityForResult(intent, REQUEST_CODE);,REQUEST_CODE大于65535.

解决方案:

  • 使请求代码更小
  • 覆盖startActivityForResult以处理更大的请求代码(这将主要归结为一个截断或一些其他操作以将请求代码推送到边界内的hack)在链接的答案(从上面)中,代码startActivityForResult就是你的问题' Raghav Sood重新陷入困境.

  • (并确认此代码是积极的价值) (2认同)