- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题已有答案 here , here和 here .但是他们没有被 OP 确认正在工作,在我的情况下,由同一个 PendingIntent 设置的警报没有被取消。 有没有办法取消闹钟闹钟?
@Override
protected void onHandleIntent(@Nullable Intent i) {
Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
i.putExtra(AlarmClock.EXTRA_HOUR, 6);
i.putExtra(AlarmClock.EXTRA_MINUTES, 0);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "Good Morning");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
PendingIntent alarmIntent = PendingIntent.getActivity(
this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(),
alarmIntent);
Log.d(TAG, "Alarm set");
try {
Thread.sleep(15000);
alarmMgr.cancel(alarmIntent);
Log.i(TAG, "Alarm canceled");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
此代码按预期输出:
Alarm set
Alarm canceled
但它不会取消设置的闹钟。我究竟做错了什么?
最佳答案
所以,我发现我需要使用 ACTION_DISMISS_ALARM
而不是 ACTION_SET_ALARM
.它可以让您取消闹钟中已经设置的闹钟。
答案here , here , 和 here建议取消 PendingIntent ,它对我不起作用,也没有被确认为问题作者工作。
我认为,为什么从 AlarmManager 取消 PendingIntent 不起作用的解释可能是 PendingIntent 可以让您做某事或稍后发送 Intent 。一旦你已经完成(已经发送了 Intent ),你就无法撤消它。例如,您可以取消通知,但不能撤消从通知(已执行的 Intent 或操作)打开应用程序,因为它已经完成。此外,就我而言,这是另一个我需要取消警报的应用程序,所以也许我不应该期望能够撤消该操作。
因此,为了解除或取消警报,您需要发送一个带有操作 ACTION_DISMISS_ALARM
的新 Intent 。 .
如下替换 try/catch 块为我正确设置和取消警报:
try {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M) {
return;
}
Thread.sleep(15000);
Intent ci = new Intent(AlarmClock.ACTION_DISMISS_ALARM);
ci.setData(i.getData());
alarmIntent = PendingIntent.getActivity(this, 0, ci, 0);
alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(),
alarmIntent);
Log.i(TAG, "Alarm cancelled");
} catch (InterruptedException e) {
e.printStackTrace();
}
但是,这只适用于 API 级别 23+ 并且不会让您像
ACTION_SET_ALARM
那样使用 SKIP_UI .
关于android - 如何在时钟应用中正确取消 AlarmManager 设置的 AlarmClock 闹钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63431995/
我正在解决 JavaBat 问题并且对我的逻辑感到困惑。 这是任务: Given a day of the week encoded as 0=Sun, 1=Mon, 2=Tue, ...6=Sat,
我正在创建一个旨在创建闹钟以唤醒用户的应用程序。我没有使用AlarmManager,因为我不需要应用在闹钟响起后运行任何代码或功能。因此,我的应用程序的最终目标是设置手机的 native 闹钟。为此,
我需要添加带有预设铃声和最大音量的闹钟 但我不明白如何将此信息传递给 AlarmClock....我的 res/raw 中有铃声(在 apk 中),我使用此代码: Intent i = new Int
我在将特定日期设置为 AlarmClock() 而不是 AlarmManager() 时遇到了问题。我在 Internet 上的所有示例都显示使用 AlarmManager() 在特定日期开始 Act
我想将 Intent 与 android.provider.AlarmClock 一起使用关闭(ACTION_DISMISS_ALARM)一个特定的警报。我想使用 ALARM_SEARCH_MODE_
我们可以使用 AlarmClock 类在默认时钟应用程序中设置闹钟。有没有一种方法可以使用此 AlarmClock 类设置每天或在特定日期重复的重复警报? 最佳答案 不幸的是没有。正如您在 the A
给定的示例产生异常(android.content.ActivityNotFoundException:找不到处理 Intent 的 Activity ) Intent i = new Intent(
这个问题已有答案 here , here和 here .但是他们没有被 OP 确认正在工作,在我的情况下,由同一个 PendingIntent 设置的警报没有被取消。 有没有办法取消闹钟闹钟? @Ov
我们可以在android中用intent创建闹钟 Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); i.putExtra(
我是 Android 应用开发新手 需要根据用户输入数据打开警报.. 我读过有关闹钟的内容:它可用于将闹钟设置为默认时钟应用程序,并且无法取消。 Alarmmanager:用于在指定时间触发事件,但具
所以我有一个代码可以在指定时间设置闹钟。我还想指定星期几。到目前为止,我发现的所有示例都使用了 Calendar 类,但是,我使用的是 AlarmClock。这是我的代码: Intent openNe
我正在为我制作这个应用程序,使用 api 9 和股票闹钟。 我找到了这个:http://code.google.com/p/android-alarm-database/ 在创建我的主要 Activi
我是一名优秀的程序员,十分优秀!