我希望实现一个Activity,它启动一个能够拦截/接收每日预定时钟闹钟的服务,并在事件被触发时以编程方式解除它(即识别语音事件)。 在实践中,我有:
public class MyReceiver extends BroadcastReceiver {
...
}
在ALARM_ALERT_ACTION(com.android.deskclock.ALARM_ALERT)上注册[我已经读过这只适用于系统时钟应用程序] 现在,当正确调用Alarm ring MyReceiver.onReceive(...)方法时,我无法通过代码解除警报(不要再打盹)。 我已经创建了许多示例,使用带有.cancel(PendingIntent)方法调用的AlarmManager实例,但这可能仅在自定义Intent调度警报时才有效。 我已尝试获取所有正在运行的进程并终止com.android.deskclock进程,但这是一种无法正常工作的方式。
因此,总而言之,我已经安排了系统安卓时钟应用程序的每日闹钟,并且我想要一个拦截com.android.deskclock.ALARM_ALERT动作/事件的服务并将其解雇码。 在此先感谢所有人。
答案 0 :(得分:1)
我已经创建了如何做...检查下面的代码:
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);
在实践中使用这些说明我启动了“解雇”警报事件,这会产生当前的警报响铃;)
再见
答案 1 :(得分:0)
我认为解除警报的唯一方法是:1)拦截警报广播并将其重定向到假布尔值,或者2)如果警报应用程序有要调用的API。