首页 > 解决方案 > 如何为选定的日期设置具有相同 ID 的警报?

问题描述

我有两个变量:


不幸的是我的代码不起作用 - 警报没有显示。你能告诉我我做错了什么吗?我可以为多个警报设置相同的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);
}

标签: javaandroid

解决方案


无需设置多个闹钟,您只需设置一个重复闹钟即可。为此,您必须提供以毫秒为单位的重复间隔,如下所示

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 之后触发第二个警报时,它将取消第一个重复警报。


推荐阅读