2016-07-03 59 views
5

In precedenza, ho utilizzando la seguente Google Play Services 8.4.0Google Play Services 9.2.0 cause di incidente indesiderato nel dispositivo senza Google Play Services - NPE a 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' 

quando corro l'app nel dispositivo senza Google Play Services installato. Ecco il dialogo che sto ottenendo. Nessun arresto dopo aver premuto il pulsante di dialogo.

enter image description here

Tuttavia, dopo la migrazione a Google Play Services 9.2.0 con Firebase

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' 

ottengo una finestra di dialogo diversa.

enter image description here

L'applicazione si blocca se si preme il pulsante di dialogo

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) 

Qualche idea su come posso evitare tale incidente?

+0

Ho tenuto l'aggiornamento a 9.2.0 in attesa di una correzione, ora che 9.2.1 è fuori sono deluso dal fatto che questo non sia già stato risolto. Il downgrade a 9.0.2 è la mia soluzione corrente. – gcesarmza

risposta

0

Questo errore si verifica quando si dispone di un emulatore o dispositivo in cui non sono installati google play services. Per ovviare al problema di salvare l'app in caso di arresto anomalo. utilizzare i seguenti step

  1. Override startSubActivity (intento, requestcode)
  2. In startSubActivity Aggiungere Super chiamata super.startActivityForResult nel tentativo di cattura e prendere il NullPointerException

Facile il suo fare ora è possibile trappola qui la nullpointerexception e aggiungi la gestione degli errori nel catch

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

È necessario considerare il caso in cui sul mercato non ci siano dispositivi che non dispongono di GPS. –

+0

@CheokYanCheng per quello che posso dare intenzionalmente a mano sul blocco 'catch'. – Ironman

Problemi correlati