我使用快捷方式启动带有操作和参数的 Activity 。
fun makeShortcut(id: String, @StringRes shortLabel: Int, @StringRes longLabel: Int,
@DrawableRes icon: Int, action: String, cmd: String): ShortcutInfo {
return ShortcutInfo.Builder(context(), id)
.setShortLabel(context().getString(shortLabel))
.setLongLabel(context().getString(longLabel))
.setIcon(Icon.createWithResource(context(), icon))
.setIntents(arrayOf(
Intent(action).putExtra(KEY_CMD, cmd)
))
.build()
}
开始 Activity 后,我做了一些事情并完成了 Activity 。 我从任务管理器启动 Activity 。 KEY_CMD 传递的值仍然存在。当 Activity 从任务管理器进入时,我想清除这些值。
最佳答案
这可能是 Android 的错误或功能,具体取决于您期望的工作方式。对你来说,它显然更像是一个错误而不是一个功能。看我类似问题的详分割析here
要解决您的问题,您可以尝试创建一个 <activity-alias>
您用于快捷方式的。 <activity-alias>
指向相同的 <activity>
您用作主要启动器,但您可以指定不同的标志和行为。如果指定 android:excludeFromRecents="true"
在<activity-alias>
并使用 <activity-alias>
在您的快捷方式中,这应该可以解决您的问题。
如果您的整个应用程序只包含一个 Activity
, 那么您可以通过添加 android:excludeFromRecents="true"
轻松解决您的问题为你的 Activity
在 list 中(在这种情况下,您不需要 <activity-alias>
)。
关于android - 从任务管理器输入时,Intent 的参数始终保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069017/