Piszę coś przypominającego dla użytkowników. Użytkownicy ustawią przypomnienia o swoich zdarzeniach, a kiedy nadejdzie czas, zostanie ustawiony alarm powtarzający się, powodujący powiadomienie o pasku stanu. Ale alarm wydaje się być nieprzerwany po tym, jak wybrałem powiadomienie lub wyczyściłem powiadomienie. Nie wiem, gdzie anulować ten powtarzający się alarm. Poniżej znajdują się niektóre z kodów: Ustaw powtarzający się alarm w moim głównym działalnościJak anulować ten powtarzający się alarm?
alarmTime = Calendar.getInstance();
Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmTime.add(Calendar.MINUTE,offset_time);
//Schedule the alarm
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime.getTimeInMillis(), 30 * 1000, sender);
W moim OnReceive metody, po prostu wyświetla powiadomienia w pasku stanu i ustawić flagę jako FLAG_AUTO_CANCEL
manager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
// Set the icon, scrolling text and timestamp
Notification notification = new Notification(R.drawable.medical, text, System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, i, 0);
notification.flags = Notification.FLAG_AUTO_CANCEL;
manager.notify(R.string.service_text, notification);
Jak mogę przerwać alarm, gdy użytkownik wybierze powiadomienie lub je wyczyści?
Chcę anulować alarm po użytkownik widzi zgłoszenie, ale zgłoszenie jest zdefiniowany w onReceive. Jak więc ustalić, czy użytkownik wie o powiadomieniu w mojej głównej działalności przed anulowaniem alarmu? Dzięki – Wen
@Wen: użyj innej funkcji (np. Innej czynności), aby rozpocząć główną aktywność od powiadomienia, niż używasz programu uruchamiającego . Lub, jeśli przenosisz istniejącą instancję głównego działania na pierwszy plan, powiadomienie wywoła funkcjęNewIntent() w działaniu, aby można było anulować alarm. – CommonsWare
Powiadomienie wywoła inną aktywność. Co masz na myśli przez użycie intencji diff, aby rozpocząć działanie od powiadomienia, a nie używać programu uruchamiającego? – Wen