以前,我使用以下 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)
关于如何避免此类崩溃的任何想法?
最佳答案
如果您的模拟器或设备未安装 google play services,则会发生此错误。要变通保存应用程序崩溃。使用以下步骤
- Override startActivityForResult(intent, requestcode)
- In startActivityForResult add super call super.startActivityForResult in try catch and catch the NullPointerException
Easy its done Now you can trap the nullpointerexception here and add your error handling in catch
@Override
public void startActivityForResult(Intent intent, int requestCode) {
try {
super.startActivityForResult(intent, requestCode);
} catch (Exception e) {
// fixes here..
}
}
关于android - Google Play Services 9.2.0 导致设备在没有 Google Play Services 的情况下意外崩溃 - NPE at android.app.Instrumentation.execStartActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166820/