【问题标题】:Exception with Android when using ACRA使用 ACRA 时 Android 出现异常
【发布时间】:2013-01-17 11:23:41
【问题描述】:

我的应用程序使用 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)
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)

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您使用的是谷歌地图 v2 吗?我相信这是一个与之相关的错误。

标签: android android-activity start-activity


【解决方案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,对于我们这 10 个痴迷的人来说,这意味着 65535

【讨论】:

  • 您在对话通知模式下使用 ACRA,我接受。这会导致 ACRA 调用 startActivityForResult(),从而导致您的异常。
  • 谢谢。我会检查这个。
  • 嗯,ACRA 不会随时调用#startActivityForResult。至少在 ACRA 4.4.0 及更高版本中没有。但是,如果您在上面显示更多堆栈跟踪,我们将看到真正的罪魁祸首。这似乎与 ACRA 无关。
  • @William 那我一定是搞错了。
  • 我现在已经添加了完整的堆栈跟踪
猜你喜欢
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 2011-10-15
  • 2015-02-05
  • 2014-08-06
相关资源
最近更新 更多