40 votes

L'intention.migrateExtraStreamToClipData() sur un objet nul de référence

Commencé à avoir cette erreur dans la production de la version de mon application.

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference

Il n'y a pas de ligne claire à ce qui se produit réellement, mais j'ai récemment changé mon soutien version de bibliothèque à 24.0.0. Voici la pleine stacktrace:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference
   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1494)
   at android.app.Activity.startActivityForResult(Activity.java:3745)
   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:3706)
   at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871)
   at com.google.android.gms.common.internal.zzi$1.zztD(Unknown Source)
   at com.google.android.gms.common.internal.zzi.onClick(Unknown Source)
   at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5254)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

EDIT: je tiens aussi à noter que 100% des utilisateurs d'erreur sont également des racines. Cela se produit également sur 23.4.0... j'ai aussi un potentiel d'erreur lié à ce qui surgit en même temps ce qui a à voir avec la Base64.décoder fonction en relation avec Firebase.

EDIT 2: j'ai reçu de l'aide d'un Android Dev, l'autre jour. Ils m'ont conseillé de mettre à jour mon projet de Google Play Services version et il semble avoir aidé à ce jour. Je vais attendre quelques jours de plus pour obtenir les résultats de mes utilisateurs, mais les premiers journaux sont prometteurs.

J'étais auparavant à l'aide de 9.0.2, mais je suis maintenant sur 9.2.0.

EDIT 3: la mise à Jour de 9.2.0 n'aide pas les accidents. Je suis toujours obtenir la même erreur de enracinée des utilisateurs. J'ai noté que les utilisateurs d'avoir des accidents sont ci-dessous Android 6.0 donc je vais tester sur un appareil et de mettre à jour le plus tôt possible.

19voto

MVojtkovszky Points 329

Semble que l'erreur se produit sur les appareils où Google Play Services ne sont pas installés, passé à l'intention sera alors nulle.

Vous pouvez assurez-vous que l'intention passé n'est pas nulle en surchargeant la méthode startActivityForResult dans votre Activité.

@Override    
public void startActivityForResult(Intent intent, int requestCode) {
    if (intent == null) {    
        intent = new Intent();        
    }       
    super.startActivityForResult(intent, requestCode);
}

4voto

Smalls Points 131

Cette question est un peu vieux, mais je voulais juste partager une mise à jour. Selon cette Github question sur le GCM projet, le problème devrait être résolu dans Google Play Services de la version 9.4.0. L'on a accepté la réponse devrait fonctionner aussi bien (comme intermédiaire patch), mais si vous mettez à jour votre Google Play Services de la bibliothèque de ce problème devrait être résolu.

0voto

user2212515 Points 116

c'est vraiment fonctionne

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X