如何从后台服务的全屏意图通知Android中打开活动

Posted

技术标签:

【中文标题】如何从后台服务的全屏意图通知Android中打开活动【英文标题】:How to open activity from background service's full screen intent notification Android 【发布时间】:2021-03-16 03:50:17 【问题描述】:

项目最小 API KitKat(19),项目目标 API android 10(30)

我正在尝试做一些事情来从我的后台服务启动一个活动。 我知道从 API 29 开始,从后台服务启动 Activity 显然是不可能的。

但是,是否可以为该通知创建一个全屏意图通知和一个广播接收器,从而自动从我的应用中打开一个活动?或者,用户是否仍需要点击全屏通知才能启动 Activity?

如果以这种方式从广播接收器自动启动活动是可能的,那将如何实现?

谢谢!

【问题讨论】:

【参考方案1】:

您可以通过在清单中添加"SYSTEM_ALERT_WINDOW" 权限来从后台打开活动,并在应用第一次打开时通过在应用中的某处调用startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)); 并授予您的应用权限来请求用户权限。

【讨论】:

我会试试的!设置中是否存在用户需要使用我的代码重新路由到的位置,或者当我将权限放入清单时,对话框是否会由 android 系统打开? 我添加了权限并从我的后台运行此活动,但没有任何运气:Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); App.getContext().startActivity(startMain);我还应该做什么?

以上是关于如何从后台服务的全屏意图通知Android中打开活动的主要内容,如果未能解决你的问题,请参考以下文章

如何打开Android版Chrome Beta隐藏的全屏模式

如何将意图发送到正在运行的服务或后台活动?

全屏意图未启动活动,但确实在 android 10 上显示通知

从 Android 意图打开 Ionic (Capacitor) 应用程序中的特定页面

为啥挂起的意图在从服务的通知中调用时不会启动活动

适用于 Android 的 Azure 通知中心:如何使用后台服务处理数据消息?