FLAG_ACTIVITY_NEW_TASK 无法在 API 31 工作?
FLAG_ACTIVITY_NEW_TASK not working in API 31?
我正在将我的应用目标 SDK 从 API 30 升级到 API 31。
在我的应用程序执行期间,我一直显示一条通知。单击此通知时,如果应用程序处于后台,则会打开该应用程序。我的通知的 ContentIntent 触发执行:
...
Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent)
...
因此,当在 API 30 智能手机上执行时,此代码在我的目标 API 31 应用程序上按预期工作(如果应用程序在后台运行,则该应用程序会进入前台)。相反,如果 运行 在 API 31 智能手机上,该应用程序将保留在后台。对于 api 31 智能手机上针对 api 31 的应用程序,我还没有发现任何关于此类电子行为变化的信息,所以我想知道我应该怎么做才能将应用程序置于前台。
据推测,您现有的代码使用了一个“蹦床”:一个 non-activity PendingIntent
运行代码,然后开始一个 activity。那不再受支持。相反,使用 activity PendingIntent
直接启动您的 MyActivity
。
我正在将我的应用目标 SDK 从 API 30 升级到 API 31。 在我的应用程序执行期间,我一直显示一条通知。单击此通知时,如果应用程序处于后台,则会打开该应用程序。我的通知的 ContentIntent 触发执行:
...
Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent)
...
因此,当在 API 30 智能手机上执行时,此代码在我的目标 API 31 应用程序上按预期工作(如果应用程序在后台运行,则该应用程序会进入前台)。相反,如果 运行 在 API 31 智能手机上,该应用程序将保留在后台。对于 api 31 智能手机上针对 api 31 的应用程序,我还没有发现任何关于此类电子行为变化的信息,所以我想知道我应该怎么做才能将应用程序置于前台。
据推测,您现有的代码使用了一个“蹦床”:一个 non-activity PendingIntent
运行代码,然后开始一个 activity。那不再受支持。相反,使用 activity PendingIntent
直接启动您的 MyActivity
。