Я получаю эту ошибку на физическом устройстве (Samsung SM-J710F) с Android API 27. Тот же код хорошо работает на физическом устройстве с API 21.
Я использую этот код Kotlin из документации Firebase для проверки:
private fun onClick() {
val intent = AppInviteInvitation.IntentBuilder("Title test")
.setMessage("Invite Test")
.setCallToActionText("call back test")
.build()
startActivityForResult(intent, REQUEST_INVITE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
Log.d(TAG, "onActivityResult: requestCode=$requestCode, resultCode=$resultCode")
if (requestCode == REQUEST_INVITE) {
if (resultCode == Activity.RESULT_OK) {
// Get the invitation IDs of all sent messages
val ids = AppInviteInvitation.getInvitationIds(resultCode, data!!)
for (id in ids) {
Log.d(TAG, "onActivityResult: sent invitation $id")
}
} else {
//resultCode is always Activity.RESULT_CANCELED (0)
}
}
}
Gradle:
implementation 'com.google.firebase:firebase-invites:16.0.6'
Письмо отправлено, но возвращается результат активности:
resultCode
всегда Activity.RESULT_CANCELED (0)
- данные
всегда ноль
Я нашел этот ответ для аналогичного поста, в котором говорится, что эта конкретная ошибка может возникать на устройствах Android 8.
Здесь полный стек:
java.lang.RuntimeException: Error receiving broadcast Intent { act=com.google.android.gms.appinvite.intent.action.INVITE_SENT cat=[android.intent.category.DEFAULT] flg=0x10 (has extras) } in com.google.android.gms.appinvite.AppInviteChimeraActivity$AppInviteResponseReceiver@ea2626
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_54380(LoadedApk.java:1365)
at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.$m$7(Unknown Source:4)
at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.run(Unknown Source:39)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@abaa43e -- permission denied for window type 2003
at android.view.ViewRootImpl.setView(ViewRootImpl.java:1026)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:384)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:101)
at gkf.a(:com.google.android.gms@14799017@14.7.99 (040306-223214910):23)
at gkf.a(:com.google.android.gms@14799017@14.7.99 (040306-223214910):15)
at gkf.a(:com.google.android.gms@14799017@14.7.99 (040306-223214910):1)
at com.google.android.gms.appinvite.AppInviteChimeraActivity.a(:com.google.android.gms@14799017@14.7.99 (040306-223214910):107)
at com.google.android.gms.appinvite.AppInviteChimeraActivity$AppInviteResponseReceiver.a(:com.google.android.gms@14799017@14.7.99 (040306-223214910):2)
at ygn.onReceive(:com.google.android.gms@14799017@14.7.99 (040306-223214910):1)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_54380(LoadedApk.java:1355)
at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.$m$7(Unknown Source:4)
at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.run(Unknown Source:39)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Глядя на стек, кажется, что проблема заключается в разрешениях:
Unable to add window android.view.ViewRootImpl$W@abaa43e -- permission denied for window type 2003
К тому же ответу , потребуется изменить способ разрешения запросов Firebase, чего я не могу сделать. Я застрял здесь.
Обновление:
Я пытаюсь с Firebase quickstart приглашает проект и получает то же поведение:
- Работает на физическом устройстве под управлением API21.
- Сбой на физическом устройстве с API28
Я все еще думаю, что это должно быть что-то, что я скучаю, потому что не очень правдоподобно, что даже самый простой тест не пройден.