webentwicklung-frage-antwort-db.com.de

Intent.migrateExtraStreamToClipData () für eine Nullobjektreferenz

Dieser Fehler wurde in der Produktionsversion meiner App abgerufen.

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

Es gibt keine klare Linie, bei der dies tatsächlich vorkommt, aber ich habe kürzlich meine Version der Support-Bibliothek auf 24.0.0 geändert. Hier ist der volle 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: Ich möchte auch beachten, dass 100% der Benutzer, die diesen Fehler erhalten, ebenfalls verwurzelt sind. Dies tritt auch auf 23.4.0 auf ... Ich habe auch einen potenziellen Fehler, der zur selben Zeit aufgetaucht ist, der mit der Base64.decode-Funktion in Bezug auf Firebase zusammenhängt.

EDIT 2: Ich habe neulich Hilfe von einem Android-Entwickler erhalten. Sie schlugen vor, dass ich die Google Play Services-Version meines Projekts aktualisiere. Dies scheint bisher geholfen zu haben. Ich warte noch ein paar Tage, um die Ergebnisse meiner Benutzer zu erhalten, aber die ersten Protokolle sind vielversprechend.

Ich habe vorher 9.0.2 verwendet, bin aber jetzt auf 9.2.0.

EDIT 3: Die Aktualisierung auf 9.2.0 hat die Abstürze nicht geholfen. Ich bekomme immer noch die gleiche Fehlermeldung von gerooteten Benutzern. Ich habe festgestellt, dass bei den Nutzern Abstürze unter Android 6.0 auftreten, also werde ich auf einem Live-Gerät testen und ASAP aktualisieren.

30
c0deblooded

Anscheinend tritt der Fehler auf Geräten auf, auf denen Google Play Services nicht installiert ist. Der übergebene Intent ist dann null.

Sie können sicherstellen, dass die übergebene Absicht nicht null ist, indem Sie die Methode startActivityForResult in Ihrer Activity überschreiben.

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

Diese Frage ist ein bisschen alt, aber ich wollte nur ein Update darüber veröffentlichen. Gemäß dieser Github-Ausgabe zum GCM-Projekt sollte das Problem in der Google Play Services-Version 9.4.0 gelöst werden. Die akzeptierte Antwort sollte ebenfalls funktionieren (als Zwischenpatch). Wenn Sie jedoch Ihre Google Play Services-Bibliothek aktualisieren, sollte dieses Problem behoben sein.

3
Smalls

das funktioniert wirklich

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

Wahrscheinlich ist es das gleiche Problem wie in getLaunchIntentForPackage ist für einige Apps null . Nicht wirklich ein Duplikat (da OP die anstößige Linie nicht finden konnte, die in der verknüpften Frage bekannt ist), aber wenn jemand damit konfrontiert ist Problem, kann die Lösung der verknüpften Frage helfen.

0
Piotr Śmietana