java - 如何在 Android 中使用 AlarmClock.ACTION_DISMISS_ALARM
问题描述
这是应该通过标签解除警报的代码:
Intent intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);
intent.putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE, AlarmClock.ALARM_SEARCH_MODE_LABEL);
//intent.putExtra(AlarmClock.ALARM_SEARCH_MODE_TIME,1);
//intent.putExtra(AlarmClock.EXTRA_IS_PM, true);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(AlarmClock.EXTRA_MESSAGE, "Label");
if(intent.resolveActivity(getPackageManager()) != null){
startActivity(intent);
} else {
Toast.makeText(SetAlarmActivity.this, "There is no app that support this action", Toast.LENGTH_SHORT).show();
}
不幸的是,它只是打开了默认的闹钟应用程序,甚至没有关闭我需要的闹钟。如何使其正常工作?
解决方案
该代码正在做它应该做的事情。它正在打开您指定的意图 - 闹钟应用程序。
我假设您通过 AlarmManager 设置了警报并想取消它?如果是这样,代码是:
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(), YourBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getApplicationContext(), REQUEST_CODE, myIntent, 0);
alarmManager.cancel(pendingIntent);
确保请求代码与您开始时相同。
如果您实际上通过闹钟应用设置了闹钟并想取消它 - 我不确定是否有不涉及用户的方法。
推荐阅读
- html - 我的密码验证没有正确执行
- vue.js - 通过组件从外部 api 加载路由并将它们添加到路由器
- c++ - 使用指针作为参数的调用函数内部的对象为空
- elasticsearch - 从嵌套查询中过滤记录 - 弹性搜索
- sql - 避免使用 sum 的笛卡尔积
- excel - 基于另一张表中的动态自动过滤器在一张表上创建图表 - 返回不正确的范围
- typescript - 如何找到我的应用程序中定义的 TS 类型?
- c# - c# 从 linq join 返回命名元组
- java - 如何使用 (for i=firebase.getChildrencount) i>0 i-- 从 firebase 数据库中检索每个“i”
- reactjs - 为什么当我在 TS 中更改对象的副本时,原始对象也会更改?