kotlin 深度链接通知在Android 12中不起作用(用户点击通知时不打开应用程序)

7nbnzgx9  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(539)

它运行良好,应用程序也在生产中。但最近我们注意到,在android 12上,当用户点击通知时,它不会打开应用程序,也不会导航深层链接所包含的片段/活动。
但是,只要用户打开应用程序,深度链接就会被触发(如果用户之前点击过通知)并将用户移动到深层链接中的目标位置。如果用户在应用中点击通知,它也会正常工作。但如果用户在应用之外,它就不工作了。我们还尝试将firebaseBomVersion升级到最新版本(31.0.2)。但是似乎没有任何东西起作用。
网上还有其他帖子与深度链接不工作的android 12,但他们都有不同的问题。
有人知道这个问题吗?

kmpatx3s

kmpatx3s1#

最后,问题是

system_process E/NotificationService: Indirect notification activity start (trampoline) from com.xyz.debug blocked

在android 12及更高版本中,我们无法通过通知点击从服务或广播接收器启动Activity(这就是我在这里所做的),我试图从广播接收器启动Activity,当用户点击通知时,我正在启动广播。
当用户与通知交互时,一些应用通过启动一个应用组件来响应通知点击,该组件最终启动用户最终看到并与之交互的Activity。该应用组件称为通知蹦床。
为了提高应用性能和用户体验,面向Android 12或更高版本的应用无法从用作通知蹦床的服务或广播接收器启动Activity。换句话说,用户点击通知或通知中的操作按钮后,您的应用无法在服务或广播接收器中调用startActivity()。
当您的应用尝试从充当通知蹦床的服务或广播接收器启动Activity时,系统会阻止Activity启动,并且
文档链接
我是如何解决这个问题的呢?简单来说,我使用了相同的代码,即向挂起的Intent添加一个广播,并将该挂起的Intent附加到setContentIntent()在Android 11及更低版本设备的通知上,但对于Android 12及更高版本的设备,我将该广播替换为活动意图(具有透明背景活动),我放置了用于android 11和更低版本设备的相同广播代码,然后使用sendBroadcast()方法我自己触发了那个Intent,然后完成了那个Activity。

相关问题