9

我的应用程序使用 ACRA 进行错误报告,并且我的设备收到了一些错误报告:Can only use lower 16 bits for requestCode.. Google 显示使用 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)

有人可以帮我吗?

4

1 回答 1

14

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

解决方案:

  • 使请求代码更小
  • 覆盖startActivityForResult以处理您较大的请求代码(这主要归结为截断或其他一些操作以将您的请求代码推送到边界内)在链接的答案(从上面)中有代码startActivityForResult是您的问题被 Raghav Sood 再次撞上。
于 2013-02-08T14:05:45.443 回答