android - Android 从服务启动 Activity
问题描述
我有一个允许视频通话的应用程序。它使用firebase通知工作。流量是
1)推送来 2)PushService 启动我的 CallService。3) CallService 通过 PendingIntent 启动 IncomingCallActivity。
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 或更高级别为目标,则在后台运行且应用程序没有任何现有活动(如您所见,应用程序未运行时就是这种情况)时,您无法Activity
从 a启动。API 级别 29 中添加了此限制,以减少后台应用程序对 UI 的干扰。有关允许后台启动.Service
Service
Service
Activity
要验证这是您的问题,请将您的 targetSDK 更改为 28 或更低,然后查看问题是否消失。
推荐阅读
- python - 将 .py 转换为 .html 文件
- ruby-on-rails - Rails 6:控制器帮助方法仍在 /app/helpers 文件夹中?
- nginx - nginx 文件服务器上的慢 apache 基准测试
- wordpress - 使用应用程序将订单从 Woocommerce webhook 导出到谷歌表格
- java - 相当于 RSA/None/OAEPWithSHA1AndMGF1Padding 和 PHP 中的充气城堡
- ansible - Ansible 查找格式
- postgresql - 可以使用 pglogical 将本地数据库迁移到 AWS RDS 吗?
- node.js - Socket.io“连接”事件随机触发多次
- mongodb - 如何使用 cloudrun 执行 mongodump 到 cloudstorage?
- flutter - 无法在flutter中下载Bloc Pattern的包