Intención.migrateExtraStreamToClipData () sobre una referencia de objeto null


Comenzó a recibir este error en la versión de producción de mi aplicación.

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

No hay una línea clara en la que esto realmente ocurre, pero recientemente cambié mi versión de la biblioteca de soporte a 24.0.0. Aquí está la carrera completa:

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: También quiero señalar que el 100% de los usuarios que obtienen este error también tienen sus raíces. Esto también ocurre en 23.4.0... También tengo un posible error relacionado que apareció al mismo tiempo que tiene que ver con la Base64.función de decodificación en relación con Firebase.

EDIT 2: Recibí ayuda de un desarrollador de Android el otro día. Me sugirieron que actualice la versión de servicios de Google Play de mi proyecto y parece haber ayudado hasta ahora. Esperaré unos días más para obtener los resultados de mis usuarios, pero los registros iniciales son prometedores.

Anteriormente estaba usando 9.0.2, pero ahora estoy en 9.2.0.

EDITAR 3: Actualizar a la versión 9.2.0 no ayudó a los bloqueos. Todavía estoy recibiendo el mismo error de los usuarios rooteados. He observado que en los usuarios conseguir accidentes están por debajo de Android 6.0 así que voy a estar probando en un dispositivo en vivo y actualizar LO antes posible.

Author: c0deblooded, 2016-06-26

3 answers

Parece que el error se produce en dispositivos donde los servicios de Google Play no están instalados, la intent pasada será nula.

Puede asegurarse de que la intent passed no sea null invalidando el método startActivityForResult en su Actividad.

@Override    
public void startActivityForResult(Intent intent, int requestCode) {
    if (intent == null) {    
        intent = new Intent();        
    }       
    super.startActivityForResult(intent, requestCode);
}
 9
Author: MVojtkovszky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-05 14:48:38

Esta pregunta es un poco antigua, pero solo quería compartir una actualización sobre ella. De acuerdo con este problema de Github en el proyecto GCM el problema debe resolverse en la versión de Google Play Services 9.4.0. La respuesta aceptada también debería funcionar (como un parche intermedio), pero si actualiza su biblioteca de servicios de Google Play este problema debería resolverse.

 3
Author: Smalls,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-11 22:13:57

Eso realmente funciona

@Override
public void startActivityForResult(Intent intent, int requestCode) {
    try {
        super.startActivityForResult(intent, requestCode);
    } catch (Exception ignored){}
}
 0
Author: user2212515,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-05 14:46:47