Подтвердить что ты не робот

Intent.migrateExtraStreamToClipData() для ссылки на нулевой объект

Начнется получение этой ошибки в рабочей версии моего приложения.

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

Там нет четкой строки, на которой это происходит, но недавно я изменил версию своей поддержки до 24.0.0. Здесь полный стек:

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: Я также хочу отметить, что 100% пользователей, получающих эту ошибку, также внедряются. Это также происходит на 23.4.0... У меня также есть потенциальная связанная ошибка, которая возникла в то же время, которая связана с функцией Base64.decode по отношению к Firebase.

EDIT 2: Я получил некоторую помощь от Android Dev на днях. Они предложили обновить версию своего проекта Google Play Services и, похоже, помогли до сих пор. Я подожду еще несколько дней, чтобы получить результаты от моих пользователей, но исходные журналы являются многообещающими.

Я раньше использовал 9.0.2, но теперь я на 9.2.0.

РЕДАКТИРОВАТЬ 3: Обновление до 9.2.0 не помогло. Я по-прежнему получаю такую ​​же ошибку у корневых пользователей. Я отметил, что у пользователей, получивших аварии, ниже Android 6.0, поэтому я буду тестировать на реальном устройстве и обновлять ASAP.

4b9b3361

Ответ 1

Похоже, что ошибка возникает на устройствах, где службы Google Play не установлены, переданное намерение будет равно null.

Вы можете удостовериться, что принятый замысел не равен null, переопределив метод startActivityForResult в вашей деятельности.

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

Ответ 2

Этот вопрос немного устарел, но я просто хотел поделиться с ним обновлением. Согласно этот вопрос Github в проекте GCM, проблема должна быть решена в версии Google Play Services 9.4.0. Принятый ответ должен работать также (как промежуточный патч), но если вы обновите свою библиотеку Служб Google Play, эта проблема должна быть решена.

Ответ 3

thats действительно работает

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