我想实现一个启动服务的 Activity ,该服务能够拦截/接收每日计划的时钟闹钟,并在触发事件(即识别语音事件)时以编程方式将其关闭。 在实践中我有:
public class MyReceiver extends BroadcastReceiver {
...
}
在 ALARM_ALERT_ACTION (com.android.deskclock.ALARM_ALERT) 上注册 [我读到这仅适用于系统时钟应用程序] 现在,当正确调用闹钟响铃 MyReceiver.onReceive(...) 方法时,我无法通过代码关闭(既不打盹)闹钟。 我发现许多示例使用带有 .cancel(PendingIntent) 方法调用的 AlarmManager 实例,但这可能仅在警报由自定义 Intent 安排时才有效。 我也尝试过获取所有正在运行的进程并终止 com.android.deskclock 进程,但这是一种行不通的方法。
所以,总而言之,我已经安排了系统 android 时钟应用程序的每日闹钟,我希望有一个服务可以拦截 com.android.deskclock.ALARM_ALERT 操作/事件并通过代码将其关闭。 在此先感谢大家。
最佳答案
我已经找到了如何做...检查下面的代码:
AlarmManager alrm = (AlarmManager)getApplicationContext().getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MyService.ALARM_DISMISS_ACTION);
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
alrm.set(AlarmManager.RTC_WAKEUP, 1000, pi);
在实践中,根据这些说明,我启动了一个“解除”警报事件,这会导致当前警报响铃解除;)
再见
关于安卓开发: [HOW TO] intercept daily alarm and dismiss programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24512161/