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

时间:2013-01-17 08:53:38

标签: android android-activity 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)

有人可以帮我吗?

1 个答案:

答案 0 :(得分:14)

RequestCodes只能是0xffff(65535)的最大值。所以你可能正在调用startActivityForResult(intent, REQUEST_CODE);REQUEST_CODE大于65535。

解决方案:

  • 使请求代码更小
  • 覆盖startActivityForResult来处理更大的请求代码(这些代码主要归结为截断或其他操作以将请求代码推送到边界内)在linked answer(从上面) startActivityForResult中的代码是Raghav Sood遇到的问题。