不允许从 Android 14 的 TileService 启动活动

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

我有一个简单的

TileService
并尝试通过单击图块来启动活动。它适用于 Android 13 及低版本,但在 Android 14 中我遇到异常:

startActivityAndCollapse:不允许使用 Intent 从 TileService 启动 Activity。

如何解决?

android android-intent tile-service
2个回答
2
投票

这里是TileService.java的源代码。 这里是 startActivityAndCollapse(Intent Intent) 的文档

两者都说你必须使用

startActivityAndCollapse(PendingIntent)
,因为
startActivityAndCollapse(Intent intent)
已被弃用。

您现在必须使用

startActivityAndCollapse(Intent intent)
,因为您收到此错误。请使用另一个代替。


0
投票

我们需要做一些兼容性处理。正确且可用的代码如下:

val intent = Intent().apply {
    component = ComponentName(
        "your_pkg_name",
        "your_class_name"
    )
    addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
    startActivityAndCollapse(
        PendingIntent.getActivity(
            appContext,
            0,
            intent,
            PendingIntent.FLAG_IMMUTABLE
        )
    )
} else {
    startActivityAndCollapse(intent)
}
© www.soinside.com 2019 - 2024. All rights reserved.