【问题标题】:Google Play Services 9.2.0 causes undesired crash in device without Google Play Services - NPE at android.app.Instrumentation.execStartActivityGoogle Play 服务 9.2.0 在没有 Google Play 服务的设备中导致意外崩溃 - android.app.Instrumentation.execStartActivity 上的 NPE
【发布时间】:2016-07-03 04:47:08
【问题描述】:

以前,我使用以下 Google Play Services 8.4.0

compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.google.android.gms:play-services-base:8.4.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-drive:8.4.0'

当我在未安装 Google Play 服务的设备上运行应用程序时。这是我得到的对话框。按下对话框按钮后没有崩溃。

但是,在我使用 Firebase 迁移到 Google Play Services 9.2.0 之后

compile 'com.google.android.gms:play-services-gcm:9.2.0'
compile 'com.google.android.gms:play-services-base:9.2.0'
compile 'com.google.android.gms:play-services-analytics:9.2.0'
compile 'com.google.android.gms:play-services-drive:9.2.0'
compile 'com.google.android.gms:play-services-auth:9.2.0'
compile 'com.google.firebase:firebase-ads:9.2.0'

我得到一个不同的对话框。

按下对话框按钮后应用程序崩溃

 java.lang.NullPointerException
     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1409)
     at android.app.Activity.startActivityForResult(Activity.java:3351)
     at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
     at android.app.Activity.startActivityForResult(Activity.java:3312)
     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871)
     at com.google.android.gms.common.internal.zzi$1.zzasn(Unknown Source)
     at com.google.android.gms.common.internal.zzi.onClick(Unknown Source)
     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:137)
     at android.app.ActivityThread.main(ActivityThread.java:4745)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:511)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
     at dalvik.system.NativeStart.main(Native Method)

关于如何避免此类崩溃的任何想法?

【问题讨论】:

  • 我将更新到 9.2.0 等待修复,现在 9.2.1 已经发布,我很失望这还没有修复。降级到 9.0.2 是我目前的解决方法

标签: android


【解决方案1】:

如果您的模拟器或设备未安装google play services,则会发生此错误。解决方法以保存应用程序以防崩溃。使用以下步骤

  1. 覆盖 startActivityForResult(intent, requestcode)
  2. 在 startActivityForResult 添加超级调用 super.startActivityForResult 在 try catch 和 catch 中 NullPointerException

轻松搞定现在您可以在此处捕获 nullpointerexception 并添加 你在 catch 中的错误处理

@Override
public void startActivityForResult(Intent intent, int requestCode) {
    try {
        super.startActivityForResult(intent, requestCode);
    } catch (Exception e) {
        // fixes here..
    }
}

【讨论】:

  • 你需要考虑市场上有没有GPS的设备。
  • @CheokYanCheng 因为我可以把它交给catch 块。
猜你喜欢
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多