2016-07-03 85 views
5

以前,我用下面谷歌播放服務8.4.0谷歌播放服務9.2.0原因不希望暴跌設備,而谷歌播放服務 - NPE在android.app.Instrumentation.execStartActivity

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服務的設備中的應用。這是我得到的對話框。按下對話框按鈕後沒有崩潰。

enter image description here

然而,當我遷移到谷歌播放服務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' 

我得到一個不同的對話框。

enter image description here

應用崩潰後,我按對話框按鈕

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) 

我如何能避免這種崩潰的任何想法?

+0

我把更新修改爲9.2.0等待修復,現在9.2.1不存在了,我很失望,這個問題還沒有解決。降級到9.0.2是我目前的解決方法 – gcesarmza

回答

0

如果您有仿真器或其中未安裝google play services的設備,則會發生此錯誤。要解決應用程序崩潰。使用下面的步驟

  1. 覆蓋startActivityForResult(意向,requestcode)
  2. 在startActivityForResult在嘗試捕捉添加超級呼叫 super.startActivityForResult,趕上 NullPointerException異常

易其現在做,你可以在此捕獲nullpointerexception並添加 您的錯誤處理在捕獲中

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

您需要考慮市場上沒有GPS的設備。 –

+0

@CheokYanCheng因爲我可以把它交給'catch'塊。 – Ironman