【发布时间】:2019-12-20 22:57:15
【问题描述】:
我正在使用 Android Q [beta 6] 检查我的应用程序,以便添加所有必需的更改以与最后一个 SO 完全兼容。但是,我发现我正在使用 Receiver 从后台启动 Activity,并且由于最后实施的后台限制 (https://developer.android.com/preview/privacy/background-activity-starts),该 Activity 没有被打开。
我尝试同时使用接收器上下文和应用程序上下文来启动活动,但在这两种情况下,系统都会显示一个 toast 表示无法从后台启动活动。
我在接收器上尝试了什么...
class MyReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
context?.applicationContext?.let {
it.startActivity(Intent(it, MyActivity::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
})
PushUtils.showReceiverCalledNotification(it)
}
}
这样我想启动 MyActivity 并在调用接收器时显示通知。相反,我可以看到通知,但 Activity 从未启动。立即启动activity的特性非常重要,那么有没有办法从receiver继续启动activity呢?
【问题讨论】:
-
您是否尝试了
SYSTEM_ALERT_WINDOW权限? -
是的。调用 startActivity 时同样的问题。
标签: android android-activity broadcastreceiver start-activity