Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android从服务启动活动_Android_Android Service_Android Pendingintent - Fatal编程技术网

Android从服务启动活动

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 =

我有一个允许视频通话的应用程序。 它使用firebase通知工作。流程是

1) 推来 2) PushService启动我的呼叫服务。 3) CallService通过PendingEvent开始输入CallActivity

pushService->callService->callActivity

如果应用程序位于前台或应用程序已最小化,则此方法有效。但是,如果用户根本没有启动或关闭应用程序,那么呼叫链就无法工作。callActivity未启动。有什么办法开始活动吗

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。看来我现在有很多工作要做。谢谢你的链接。