开发者社区> 问答> 正文

无法捕获java.lang.VerifyError

我收到此错误:“未捕获的处理程序:由于未捕获的异常java.lang.VerifyError而导致线程主退出”

它仅在1.6上发生。Android 2.0及更高版本没有任何问题,但这是所有要点。

我无法捕捉到错误/异常(VerifyError),并且我知道它是由调用isInitialStickyBroadcast()引起的,这在SDK 4中不可用,这就是将其包装在SDK检查中的原因。我只需要这个BroadcastReceiver可以在2.0+上工作,而不是在1.6上打入,它是市场上的一个应用程序,使用2.0+的用户需要UNDOCK功能,但显然不是1.6的用户,但是仍然有相当多的用户使用1.6。

怎么修?

谢谢!


private BroadcastReceiver mUndockedReceiver = new BroadcastReceiver()
{
      @Override
      public void onReceive(Context context, Intent intent) 
      {
          //FROM ECLAIR FORWARD, BEFORE DONUT THIS INTENT WAS NOT IMPLEMENTED
          if (Build.VERSION.SDK_INT >= 5)
          {
              if (!isInitialStickyBroadcast()) {
                  int dockState = intent.getExtras().getInt("android.intent.extra.DOCK_STATE", 1);
                  if (dockState == 0)
                  {
                      finish();
                  }
              }
          }           
      }
}; 

展开
收起
Puppet 2020-01-24 11:39:57 537 0
1 条回答
写回答
取消 提交回答
  • Intent.EXTRA_DOCK_STATE 仅存在于API级别5和更高版本中,因此仅适用于Android 2.0设备(或更高版本)。

    即使您将调用包装在API级别检查中,当您在Android 1.6运行时上运行代码时,代码也会失败VerifyError。

    解决方案是将对其的调用替换Intent.EXTRA_DOCK_STATE为其常数:android.intent.extra.DOCK_STATE。

    通常,最好在浏览API文档时勾选“按API级别过滤”复选框,并根据需要将其设置为4。这样,Android 1.6无法使用的所有类,方法或常量都将变灰。

    2020-01-24 11:40:13
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
OpenCrypto Unchaining the Java 立即下载
Java Your(Next) 立即下载
Java8简明教程 立即下载