У меня есть приложение, которое показывает будильник в определенное время каждый день, я установил AlarmManager для этого. Теперь я хочу, чтобы мое постоянное уведомление прекратилось через час. Я знаю, что должен сделать еще один AlarmManager и отменить первый, но как я могу указать, что он должен быть отменен после «Часа»?Удалить постоянное уведомление с диспетчером аварийных сообщений
Calendar calender = Calendar.getInstance();
calender.set(Calendar.HOUR_OF_DAY,01);
calender.set(Calendar.MINUTE, 00);
calender.set(Calendar.SECOND, 00);
Intent intent = new Intent(getApplicationContext(), AlertReceiver.class);
PendingIntent pendingintent = PendingIntent.getBroadcast(getApplicationContext(),100
,intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calender.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingintent);
и это мой приемник:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(context
.NOTIFICATION_SERVICE);
Intent repeating_intent = new Intent(context, SurveyActivity.class);
repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent .getActivity(context,100,repeating_intent,
PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.notiflogo)
.setContentTitle("Alarm")
.setContentText("This is Alarm")
.setTicker("Hello")
.setAutoCancel(true);
builder.setOngoing(true);
notificationManager.notify(100,builder.build());
Благодарим за отзыв, это именно то, что я хотел, но я не знаю, почему это не работает. Во-первых, я думаю, что в этой строке третий аргумент должен быть намеренным, я прав? 'PendingIntent pi = PendingIntent.getBroadcast (контекст, 0, pi, PendingIntent.FLAG_UPDATE_CURRENT); ', а затем я установил точно свою тревогу в течение одной минуты позже после моего конкретного времени для тестирования' alarmManager.set (AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 01 * 60 * 1000, pi); 'но уведомление по-прежнему там. Есть ли у вас другая идея? –
Я отредактировал свой ответ. Пожалуйста, посмотрите. Не забудьте добавить приемник в AndroidManifest. И я перечислил два способа установить будильник, попробуйте каждый из них. Кроме того, я удалил действие настройки с намерением и проверил его внутри onRecieve. Да, критический аргумент PendingIntent.getBroadcast - это намерение - я ошибся в спешке. – Umarov
Это полностью сработало, спасибо вам большое. –