Android AlarmClock(),设置闹钟日期

时间:2018-03-27 09:10:38

标签: android alarmmanager alarm

我在设置AlarmClock()而不是AlarmManager()的特定日期时遇到问题。我在互联网上的所有示例都显示使用AlarmManager()在特定日期开始活动。但我的应用程序有/需要一个自定义活动。我只需要在特定的日子注册系统警报,它会像通用的android系统警报一样响起。

Calendar c = Calendar.getInstance();
Intent alarmIntent = new Intent(AlarmClock.ACTION_SET_ALARM);
alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
alarmIntent.putExtra(AlarmClock.EXTRA_MESSAGE, "Polo!");
alarmIntent.putExtra(AlarmClock.EXTRA_HOUR, c.get(Calendar.HOUR_OF_DAY));
alarmIntent.putExtra(AlarmClock.EXTRA_MINUTES, c.get(Calendar.MINUTE) + 1);
context.startActivity(alarmIntent);

以上是我的代码。我试着用

alarmIntent.putExtra(AlarmClock.EXTRA_DAYS, c.get(Calendar.DAY_OF_MONTH));

但它只需要当天。

请帮我在特定日期使用AlarmClock()设置闹钟。

2 个答案:

答案 0 :(得分:1)

来自文档:

  

EXTRA_DAYS(可选):重复闹钟的工作日。

实际上,AlarmClock.EXTRA_DAYS是一周中这个警报响起的天数,因此您无法设置警报的确切日期。用法示例:

ArrayList<Integer> days = new ArrayList<Integer>();
days.add(Calendar.SATURDAY);
alarmIntent.putExtra(AlarmClock.EXTRA_DAYS, days);

答案 1 :(得分:0)

调用Calendar.getInstance()将返回使用当前日期初始化的Calendar对象。您需要将Calendar对象设置为所需的日期,然后访问其字段,例如:

c.set(Calendar.DAY_OF_MONTH, 30)

然后当你打电话

c.get(Calendar.DAY_OF_MONTH)

它返回30.否则,它返回当前日期。