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.
Ответы
Ответ 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){}
}