Ich weiß nicht, ob der Titel klar ist oder nicht, mein Problem mit dem Benachrichtigungsmanager ist, dass wenn ich die Zeiten als (1:00, 2:00, 3:00, 4:00) einstelle und die Zeit jetzt ist 2:30, die normale Benachrichtigung wird bis 3:00 dann 4:00 warten, aber in meinem Code gibt mir der Benachrichtigungsmanager zwei Warnungen für 1:00 und 2:00, weil die in der Vergangenheit sind, dann warten bis 3:00 und benachrichtige mich dann um 4:00 Uhr und melde mich, damit mein Problem mit der Zeit in der Vergangenheit ist. Ich möchte keine Benachrichtigung für sie bekommen.Wie kann der Benachrichtigungsmanager die Zeiten in der Vergangenheit nicht bekommen?
meinen Code Haupt class.java, alertTimes ist ein Array, das die Zeiten in Millisekunden haben
for (int i = 0; i < alertTimes.length; i++) {
inte = new Intent(this, AlertMedicine.class);
inte.putExtra("id", i);
inte.putExtra("name", NameOftimes[i]);
alarmManager.set(AlarmManager.RTC_WAKEUP, alertTimes[i], PendingIntent.getBroadcast(this, 1, inte, PendingIntent.FLAG_UPDATE_CURRENT));
}
AlertReceiver.java
createNotification(context, "OK", "OK", "OK" + j, 1, 0);
Ich versuche auch in AlertReceiver.java dies zu tun, aber dies funktioniert auch nicht
if(calendar.get(Calendar.HOUR_OF_DAY)< Integer.parseInt(arr[id].substring(0, 2))) {
createNotification(context, "OK", "OK", "OK" + j, 1, 0);
}
else
if(calendar.get(Calendar.HOUR_OF_DAY)== Integer.parseInt(arr[id].substring(0, 2))){
int min=Integer.parseInt(arr[id].substring(3, 5))+2;
if(calendar.get(Calendar.MINUTE) <= min){
createNotification(context, "OK", "OK", "OK" + j, 1, 0);
Für Tritte, was passiert, wenn Sie die Auswertung wechseln von der aktuellen HOUR_OF_DAY zu der Zeit, die Sie auf größer als überprüfen? –
es gibt mir nicht die nächste erste Benachrichtigung, wie in meinem Beispiel (1:00, 2:00, 3:00, 4:00) und die Zeit ist 2:30, wird es mir nicht 3:00 mitteilen, es wird bis 4:00 warten –