如何在选定日期设置具有相同ID的闹钟?

时间:2018-04-30 11:35:29

标签: java android

我有两个变量:

  • howManyDays - 闹钟应该工作多少天
  • cal - 开始日期

不幸的是我的代码不起作用 - 警报没有显示。你能告诉我我做错了什么吗?我可以为许多警报制作相同的ID以快速删除它吗?如果您有任何疑问,请告诉我。

int howManyDays= Integer.parseInt(countDays.getText().toString());

Cursor c = myDb.getID_REMINDER();
c.moveToFirst();
int id = Integer.parseInt(c.getString(0));

Intent intx = new Intent(getApplicationContext(), NotificationReceiver.class);
intx.putExtra("Value", nameOfMedicine.getText().toString());

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), id, intx, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

for(int i=0; i<=howManyDays; i++) {
       Calendar cc = cal;
       cc.add(cc.DATE, i);
       alarmManager.set(AlarmManager.RTC_WAKEUP, cc.getTimeInMillis(), pendingIntent);
}

1 个答案:

答案 0 :(得分:0)

您可以设置重复闹钟,而不是设置多个闹钟。为此,您必须以mili秒提供重复间隔,如下所示

Intent intx = new Intent(getApplicationContext(), NotificationReceiver.class);
    intx.putExtra("Value", nameOfMedicine.getText().toString());
    intent.putExtra("requestCode", id);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), id, intx, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);


    long repeatingInterval = 24 * 60 * 60 * 1000; // 1 day

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
            repeatingInterval, pendingIntent);

请注意,无法为Android中的howManyDays设置闹钟。一种可能的低处理解决方案是设置两个警报;一个是重复警报,第二个是最后一天的固定警报。当在howManyDays之后触发第二个警报时,它将取消第一个重复警报。