如何检测何时在 Android 中设置了新警报

Posted

技术标签:

【中文标题】如何检测何时在 Android 中设置了新警报【英文标题】:How to detect when a new alarm is set in Android 【发布时间】:2015-04-20 06:52:32 【问题描述】:

我想检测何时在 android 默认闹钟应用程序中设置了新闹钟(我使用的是三星设备)。 我试过: filter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED); 但它没有用。 PS:我的目标不是检测警报何时响起,而是使用广播接收器来监控何时创建新警报。

这是我正在使用的代码: IntentFilter filter = new IntentFilter("android.app.action.NEXT_ALARM_CLOCK_CHANGED"); filter.addAction("com.samsung.sec.android.clockpackage.alarm.SET_ALARM"); registerReceiver(mReceiver, 过滤器);

【问题讨论】:

请贴出你试过的代码。 【参考方案1】:

API Level-21 及以上,您可以在您的 AndroidManifest.xml 中为注册的 BroadcastReceiver 使用以下解决方案。

<receiver
                android:name=".YourAlarmReceiverClass"
                android:enabled="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED">
                    </action>
                </intent-filter>
 </receiver>

ACTION_NEXT_ALARM_CLOCK_CHANGED 是在 getNextAlarmClock() 返回的值发生变化后发送的,并且每次用户使用闹钟应用程序创建新闹钟时都会调用您的BroadcastReceiver's onReceive()。

【讨论】:

任何想法如何在棒棒糖之前的设备上做到这一点?【参考方案2】:

intent AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED 只会在下一个要响铃的闹钟更改时触发,而不是在任何闹钟更改时触发。只要您不被允许获取设备中所有活动警报的列表......当添加一个警报时,您可能也不会被允许获得意图。没有任何意图可以满足您的要求。

【讨论】:

以上是关于如何检测何时在 Android 中设置了新警报的主要内容,如果未能解决你的问题,请参考以下文章

Angular Cdk步进器,如何检测何时添加了新步骤

检测系统警报视图何时出现/将关闭

Android:如何检测滚动何时结束

如何在 Flutter 中设置闹钟?

在Android警报管理器中设置时间-立即触发警报[重复]

Prometheus 如何知道 Pod 何时崩溃?