我有一个简单的
TileService
并尝试通过单击图块来启动活动。它适用于 Android 13 及低版本,但在 Android 14 中我遇到异常:
startActivityAndCollapse:不允许使用 Intent 从 TileService 启动 Activity。
如何解决?
这里是TileService.java的源代码。 这里是 startActivityAndCollapse(Intent Intent) 的文档。
两者都说你必须使用
startActivityAndCollapse(PendingIntent)
,因为 startActivityAndCollapse(Intent intent)
已被弃用。
您现在必须使用
startActivityAndCollapse(Intent intent)
,因为您收到此错误。请使用另一个代替。
我们需要做一些兼容性处理。正确且可用的代码如下:
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)
}