【问题标题】:Android O Register for Alarm Clock Intent用于闹钟意图的 Android O 寄存器
【发布时间】:2018-04-10 21:10:39
【问题描述】:

我开发了一个应用程序,可以在闹钟响起时触发操作。为了实现这种行为,我为不同的制造商警报注册了一个具有各种 Intent-Filter 定义的 BroadcastReceiver。

由于 Android-O 的限制,我不再能够接收来自不同警报的 Intent。

我尝试通过代码注册 Intent:

注册广播

只要应用程序运行,它就可以捕获意图。当应用程序被终止时,BroadcastReceiver 不再接收任何意图。

当Android-O中的警报响起时,是否有任何可能的解决方案来触发动作?也将不胜感激使用 BroadcasReceiver 的不同解决方案。

我查看了 JobIntentService,显式和隐式广播,但我想我不明白如何在 Android-O 中实现可能的解决方案。

【问题讨论】:

    标签: android android-intent broadcastreceiver alarm


    【解决方案1】:

    我开发了一个应用程序,可以在闹钟响起时触发操作。

    一般来说这是不可能的。

    为了实现这种行为,我为不同的制造商警报注册了一个具有各种 Intent-Filter 定义的 BroadcastReceiver。

    这不适用于绝大多数闹钟应用。闹钟应用不需要告诉其他应用闹钟响了。

    当Android-O中的警报响起时,是否有任何可能的解决方案来触发动作?

    在任何版本的 Android 上都没有解决方案。再说一遍:闹钟应用不需要告诉其他应用闹钟响了。

    关于尝试让有限的现有实现工作......您已经选择了一个选项:让服务运行。考虑到其他 Android 8.0+ 限制,这必须是前台服务。而且,正如您所注意到的,这仅在服务运行时有效。

    【讨论】:

    • 是的,这是真的,警报不需要通知其他应用程序。但是有了意图解决方案,它工作得很好。 Android O 打破了这种做法。
    • @LukeFilewalker:“但是对于 Intent 解决方案,它工作得很好”——也许对某些人来说。 “Android O 打破了这种做法”——是的,对隐式广播的禁令打破了很多东西。除了让服务运行之外,没有通用的解决方法。
    • 也许我还没有真正了解服务的概念。但是如果我没记错,BackgroundService 也会被杀死?是否可以在每个 TICK 事件上安排一些东西,然后检查是否有任何意图?
    • @LukeFilewalker:“但如果我没记错,BackgroundService 也会被杀死?” -- Android 8.0+需要前台服务,否则一分钟后停止。前台服务运行了相当长的一段时间,其代价是在状态栏中有一个Notification(AFAIK 用户可以通过设置抑制)。 “是否可以在每个 TICK 事件上安排一些事情,然后检查是否有任何 Intents ?”——不,抱歉。
    • 感谢您的有用帮助。我很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多