java - 在 API 26 或更高版本中使 BroadcastReceiver 在后台工作

标签 java android android-studio android-fragments

我最近问了一个关于我制作的应用程序的问题,我在 list 中注册了它的 BroadcastReceiver,这在 API 级别 26 及更高版本中是被禁止的。我收到了很好的答案来帮助解决问题,其中之一是我在 Activity 本身中声明了 BroadcastReceiver,并以编程方式在那里完成了 Intent 过滤器和注册。

这是我的问题的链接: Dialog doesn't appear after system broadcast

我确实在我之前制作的类似应用程序中这样做了,但我这样做的目的是在应用程序运行时不检测铃声模式变化,而是在应用程序未运行时收听它们,这意味着应用程序的特定 Activity 在系统广播启动后立即启动。 因此,我想知道如何做到这一点,即,如果我无法在 list 中注册接收者,则让 BroadcastReceiver 在运行 API 26 或更高版本的设备中接收系统广播。

附言我在运行 Android API 级别 25 的设备上测试了该应用程序,它运行得非常完美,因为我正在为更新的 API 寻找这种技术的替代方法。

最佳答案

but to listen to them when the app is not running, meaning that the specific activity of the app is started as soon as the system broadcast initiates

对于不在 the implicit broadcast whitelist 上的广播,您需要有一个通过 registerReceiver() 注册这些广播的前台服务。

关于java - 在 API 26 或更高版本中使 BroadcastReceiver 在后台工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51304627/

相关文章:

缺少 Android Studio "design tab"

java - Class.forName 调用后如何释放内存?

java - 导入gradle依赖

iphone - 在哪里发布移动应用程序 Iphone/Android/其他?

android - AVD 在线,但不显示任何内容

android - 如何在 ionic +react + capacitor 项目中设置最低 android 版本支持?

java - 添加 X-Content-Type-Options Nosniff

java - 使方法通用

android - Kotlin/Native-> androidMain->无法解析的符号

android - 如何使用Gradle一次构建多个APK?