如何使用 AlarmClock 在 android 中设置闹钟的日期
Posted
技术标签:
【中文标题】如何使用 AlarmClock 在 android 中设置闹钟的日期【英文标题】:How to set day of alarm in android by using AlarmClock 【发布时间】:2013-07-12 09:43:24 【问题描述】:我们可以在android中创建有意图的警报
Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "New Alarm");
i.putExtra(AlarmClock.EXTRA_HOUR, 23);
i.putExtra(AlarmClock.EXTRA_MINUTES, 11);
我们想在创建警报时添加 day 属性。但是,AlarmClock 不包含有关“Extra_Day_Week”的属性,因此我们没有设置闹钟日期。你有什么想法可以通过使用意图 ve 闹钟来解决这个问题
感谢您的创意回复
【问题讨论】:
AlarmClock
提供程序无法指定日期。您是在尝试让已安装的警报应用程序在指定时间开始响铃,还是希望在这样的时间发生时收到通知(例如,以便您可以启动自己的面向用户的警报?)在后一种情况下,你会使用AlarmManager
而不是AlarmClock
。
这很奇怪,因为android中的默认应用程序提供7天的警报(未指定时间仅购买7天)。 Alarmclock 允许我们更改小时和分钟,为什么 Alarmclock 不允许更改 7 天的闹钟。
AlarmClock
是内容提供者,独立于默认应用程序。不同的第三方应用程序(和系统应用程序)可以通过处理一些意图来选择使用AlarmClock
内容提供程序。也许如果您使用用例编辑问题,人们将能够为您指出正确的方向。
【参考方案1】:
希望对您有帮助:
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.clear();
cal.set(2012,2,8,18,16);// instead of these lines you can use below lines in comment
//cal.set(Calendar.HOUR_OF_DAY, 16);
//cal.set(Calendar.MINUTE, 25);
//cal.set(Calendar.SECOND, 0);
//cal.set(Calendar.MILLISECOND, 0);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
【讨论】:
我们尝试了这段代码,但它可以正常工作,它不会向android中的默认警报应用程序添加任何警报。通常,我们共享的代码会在 android 的默认警报应用程序中设置警报。我们看到了。感谢您的回复 尝试编辑的代码哥们...并确保您已在 AndroidManifest.xml 中授予权限 @Lucky:哥们把你设置的闹钟代码保存在一个线程中,每隔 4 小时执行一次该线程。它会每天设置你的闹钟 6 次。【参考方案2】:您可能忘记了在 AndroidManifest.xml 中添加的权限
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
【讨论】:
我们说过我们可以在没有 day 属性的情况下创建警报。我们在清单中添加了权限。感谢您的回复【参考方案3】:该属性名为EXTRA_DAYS:
你可以这样使用它:
ArrayList<Integer> alarmDays = new ArrayList<>();
alarmDays.add(Calendar.MONDAY);
alarmDays.add(Calendar.WEDNESDAY);
alarmDays.add(Calendar.FRIDAY);
Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_DAYS, alarmDays);
i.putExtra(AlarmClock.EXTRA_HOUR, 23);
i.putExtra(AlarmClock.EXTRA_MINUTES, 11);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "New Alarm");
i.putExtra(AlarmClock.EXTRA_VIBRATE, true);
startActivity(i);
任何其他用户发现此问题,请不要忘记请求许可! (在清单中)
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
【讨论】:
以上是关于如何使用 AlarmClock 在 android 中设置闹钟的日期的主要内容,如果未能解决你的问题,请参考以下文章
通过背景中的android AlarmClock 类设置闹钟
Android AlarmClock ACTION_SET_ALARM 意图产生异常