我想在我的项目中实现一个计划功能。所以我在谷歌上搜索了一个警报管理器程序,但找不到任何示例。
谁能帮我做一个基本的报警管理器程序?
原文由 Rajamohan Sugumaran 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想在我的项目中实现一个计划功能。所以我在谷歌上搜索了一个警报管理器程序,但找不到任何示例。
谁能帮我做一个基本的报警管理器程序?
原文由 Rajamohan Sugumaran 发布,翻译遵循 CC BY-SA 4.0 许可协议
我尝试了 XXX 的解决方案,虽然它最初确实有效,但在某些时候它停止了工作。 onReceive
再也没有被调用过。我花了几个小时试图弄清楚它可能是什么。我开始意识到 Intent
出于某种神秘的原因不再被调用。为了解决这个问题,我发现您确实需要在清单中为接收者指定一个操作。例子:
<receiver android:name=".Alarm" android:exported="true">
<intent-filter>
<action android:name="mypackage.START_ALARM" >
</action>
</intent-filter>
</receiver>
请注意,名称是 ".Alarm"
带句点。在XXX的 setAlarm
方法中,创建 Intent
如下:
Intent i = new Intent("mypackage.START_ALARM");
START_ALARM
消息可以是任何你想要的。我只是出于演示目的给它起了这个名字。
我还没有看到清单中定义的接收器没有指定操作的意图过滤器。按照 XXX 指定的方式创建它们似乎有点虚假。通过指定动作名称,Android 将使用与动作对应的类强制创建 BroadcastReceiver
的实例。如果您依赖上下文,请注意 Android 有几个不同的对象,它们都称为上下文,可能不会导致创建您的 BroadcastReceiver
。强制 Android 仅使用操作消息创建您的类的实例比依赖一些可能永远无法工作的不确定上下文要好得多。
原文由 Johann 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
这是工作代码。它每 10 分钟唤醒一次 CPU,直到手机关机。
添加到 Manifest.xml:
你班级的代码:
从服务设置警报:
如果你想在手机开机时设置闹钟重复:
将权限和服务添加到 Manifest.xml:
并创建一个新类: