从后台启动带有待处理意图的应用程序 Android 13

问题描述 投票:0回答:1

我试图在后台打开应用程序,并通过启动广播接收器的待处理意图通知中的按钮。 这是我用于在广播接收器中启动应用程序的代码。

     val intent = packageManager.getLaunchIntentForPackage(context.applicationInfo.packageName)
                if (intent != null) {
                    intent.setPackage(null)
                    intent.flags =
                        Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
                    context.startActivity(intent)
                }

此代码适用于 Android 11,但不适用于 Android 13 设备。

我调试了一下,发现这些行被执行了,但应用程序没有启动。

有人可以帮助我如何在 Android 13 中从后台启动应用程序吗?

android android-activity android-notifications android-pendingintent
1个回答
0
投票

问题是 Android 不允许从广播接收器启动活动,该活动是通过通知从待处理意图调用的。

为了提高应用性能和用户体验,面向 Android 12 或更高版本的应用无法从用作通知蹦床的服务或广播接收器启动活动,如通知蹦床限制中所述 为了解决这个问题,不要在 Pending Intent 的对象中使用广播接收器,而是使用 Activity 并在相应的 Activity 中处理

onNewIntent
中的 Intent 数据。

© www.soinside.com 2019 - 2024. All rights reserved.