Android从服务启动活动
我有一个允许视频通话的应用程序。 它使用firebase通知工作。流程是 1) 推来 2) PushService启动我的呼叫服务。 3) CallService通过PendingEvent开始输入CallActivity pushService->callService->callActivity 如果应用程序位于前台或应用程序已最小化,则此方法有效。但是,如果用户根本没有启动或关闭应用程序,那么呼叫链就无法工作。callActivity未启动。有什么办法开始活动吗Android从服务启动活动,android,android-service,android-pendingintent,Android,Android Service,Android Pendingintent,我有一个允许视频通话的应用程序。 它使用firebase通知工作。流程是 1) 推来 2) PushService启动我的呼叫服务。 3) CallService通过PendingEvent开始输入CallActivity pushService->callService->callActivity 如果应用程序位于前台或应用程序已最小化,则此方法有效。但是,如果用户根本没有启动或关闭应用程序,那么呼叫链就无法工作。callActivity未启动。有什么办法开始活动吗 val intent =
val intent = CallActivity.newIntent(this, someExtra)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
PendingIntent.getActivity(
this,
123,
intent,
PendingIntent.FLAG_ONE_SHOT
).send()
如果您的应用程序目标API级别为29或更高,则如果
服务
位于后台且应用程序没有任何现有活动(如您所见,应用程序未运行时就是这种情况),则您无法从服务
启动活动。API级别29中添加了此限制,以减少来自后台应用程序的UI干扰。有关允许后台服务
启动活动
所需的确切条件的说明,请参阅
要验证这是否是您的问题,请将targetSDK更改为28或更低,然后查看问题是否消失。我有一个类似的应用程序。我所做的是在收到firebase推送后启动服务。然后服务发出通知并播放铃声。如果用户单击通知,它会将我的应用程序带到最前面。这种模式行得通吗?是的。它在API级别低于29的情况下工作,不包括小米设备。我已经在28个API小米上进行了测试,但它没有像29个API那样工作。我发现这是因为MIUI。看来我现在有很多工作要做。谢谢你的链接。