无法捕获java.lang.VerifyError-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

无法捕获java.lang.VerifyError

Puppet 2020-01-24 11:39:57 169

我收到此错误:“未捕获的处理程序:由于未捕获的异常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();
                  }
              }
          }           
      }
}; 
云服务器登录 云服务器设置
分享到
取消 提交回答
全部回答(1)
  • Puppet
    2020-01-24 11:40:13

    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无法使用的所有类,方法或常量都将变灰。

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题