根据此处记录的新行为https://developer.android.com/about/versions/pie/android-9.0-changes-all#fant-required,从非活动上下文开始活动需要FLAG_ACTIVITY_NEW_TASK
标志,也许...
因此,我创建了可以通过程序包名称和活动名称启动另一个应用程序活动的沙箱应用程序。用于启动的核心功能如下所示:
fun Context.startActivity(packageName: String, activityName: String) {
applicationContext.startActivity(Intent(Intent.ACTION_MAIN).apply {
component = ComponentName(packageName, activityName)
})
}
奇怪的是,通过调用此函数,我可以成功启动任何导出的活动,而无需传递FLAG_ACTIVITY_NEW_TASK
。
这与Google所说的完全不同。还是我错误地理解了这种新的行为要求?
当然,我在API 28和较低的API上对此进行了测试。
有人可以解释在什么情况下,这种新行为会破坏可在旧版API上使用的任何功能吗?
答案 0 :(得分:0)
根据this的更改,从非活动上下文中启动活动时未设置FLAG_ACTIVITY_NEW_TASK似乎是一个限制。
Activity.java中的StartActivity方法将被覆盖,并避免此限制。