ACRA异常:仅可使用请求码的低16位数值

9
我的应用程序使用ACRA来报告错误,我从设备上收到了一些带有错误的报告:Can only use lower 16 bits for requestCode.谷歌显示这个错误发生在使用startActivityForResult时,但是我已经搜索过我的代码几次,并没有在任何地方调用它。我很困惑,想知道这对用户有什么影响(有趣的是,崩溃报告测试版根本没有显示任何错误)。还有其他人遇到过这个问题吗?
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
可能是在使用ACRA时Android出现异常的重复问题。 - Yehuda Katz
1个回答

14

请求代码(RequestCodes)的最大值只能为0xffff(65535)。因此,您可能正在调用 startActivityForResult(intent, REQUEST_CODE); 并且 REQUEST_CODE 大于65535。

解决方案:

  • 将请求代码(RequestCode)变小
  • 重写startActivityForResult以处理更大的请求代码(RequestCode)(这通常涉及到截断或其他操作的黑客方式,以将请求代码(RequestCode)推入范围内)。在链接的答案中(来自上面),有Raghav Sood提供的 startActivityForResult 的代码问题,这可能是您遇到的问题。

1
而使请求代码变小的最简单方法就是在你的“过长”代码中添加& 0xFFFF - Bartek Lipinski
2
(并确保此代码为正值) - Bartek Lipinski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接