Android 从服务启动 activity
Android start an activity from a service
我有一个允许视频通话的应用程序。
它使用 firebase 通知工作。流量是
1) 推送来了
2) PushService 启动我的 CallService。
3) CallService 通过 PendingIntent 启动 IncomingCallActivity 。
pushService -> callService -> callActivity
如果应用程序在前台或应用程序已最小化,则此方法有效。但是,如果应用程序根本没有启动或被用户关闭,调用链就不起作用。 callActivity 没有启动。有什么方法可以启动activity吗?
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 或更高级别,如果 Service
在后台并且应用有没有任何现有活动(如您所见,当应用不是 运行 时就是这种情况)。此限制已添加到 API 级别 29,以减少来自后台应用程序的 UI 干扰。有关允许后台 Service
启动 Activity
所需的确切条件的解释,请参阅 https://developer.android.com/guide/components/activities/background-starts。
要验证这是您的问题,请将您的 targetSDK 更改为 28 或更低版本,然后查看问题是否消失。
我有一个允许视频通话的应用程序。 它使用 firebase 通知工作。流量是
1) 推送来了 2) PushService 启动我的 CallService。 3) CallService 通过 PendingIntent 启动 IncomingCallActivity 。
pushService -> callService -> callActivity
如果应用程序在前台或应用程序已最小化,则此方法有效。但是,如果应用程序根本没有启动或被用户关闭,调用链就不起作用。 callActivity 没有启动。有什么方法可以启动activity吗?
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 或更高级别,如果 Service
在后台并且应用有没有任何现有活动(如您所见,当应用不是 运行 时就是这种情况)。此限制已添加到 API 级别 29,以减少来自后台应用程序的 UI 干扰。有关允许后台 Service
启动 Activity
所需的确切条件的解释,请参阅 https://developer.android.com/guide/components/activities/background-starts。
要验证这是您的问题,请将您的 targetSDK 更改为 28 或更低版本,然后查看问题是否消失。