0

Ну, я достаточно старался найти ответ на вопрос, упомянутый выше, но пока мои усилия были тщетными. Я создал будильник с помощью класса будильника, который будет запускать уведомление через регулярные промежутки времени (вероятно, около 5 дней). Ниже приведен код реализации тревоги, происходящей внутри кнопки onClick().Как отменить повторное уведомление в определенную дату

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

    Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION"); 
    notificationIntent.addCategory("android.intent.category.DEFAULT"); 

    PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Calendar cal = Calendar.getInstance(); 
    if(fromDateEtxt.getText().toString().length()>0) { 
     cal.add(Calendar.HOUR_OF_DAY, 10); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), 5 * 24 * 60 * 60 * 1000, broadcast); 

    } 

Код для приемника вещания.

public class AlarmReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    Intent notificationIntent = new Intent(context, NotificationActivity.class); 

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 
    stackBuilder.addParentStack(NotificationActivity.class); 
    stackBuilder.addNextIntent(notificationIntent); 

    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context); 

    Notification notification = builder.setContentTitle("Demo App Notification") 
      .setContentText("New Notification From Demo App..") 
      .setTicker("New Message Alert!") 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setContentIntent(pendingIntent).build(); 

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(0, notification); 
}} 

Метод onClick(), кроме запуска тревоги, также изменяет активность. Теперь проблема, с которой я столкнулась, - я не знаю, как остановить повторяющуюся тревогу. Я хочу остановить будильник на определенную дату. Во-вторых, я был смущен, использовать ли будильник для отмены тревоги или использовать другой аварийный сигнал для отмены предыдущего аварийного сигнала, как показано на рисунке here. Помимо этого, я хотел знать, может ли сигнал тревоги быть отменен из другого действия или эта точка кажется ненужной, и ограничение на дату может быть установлено заранее?

ответ

0

Необходимо позвонить по телефону cancel по телефону AlarmManager с эквивалентом PendingIntent к тому, который вы использовали с setRepeating.

Пример кода -

Intent intent = new Intent(this, AlarmReceive.class); 
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

alarmManager.cancel(sender); 

Что касается вашего требования отменить его на определенную дату, вы можете установить другой сигнал тревоги с помощью AlarmManager. Передайте PendingIntent (возможно, с BroadcastReceiver), который отменяет повторяющийся сигнал тревоги, аналогичный примерному коду.

+0

Хорошо, что для отмены в конкретную дату я должен создать новый сигнал тревоги в том же действии или в другом действии, потому что активность, в которой присутствует метод onClick(), больше не будет открываться. Так что создаст еще один сигнал тревоги (тот, который используется для отмены) в методе Onclick(), создайте предел для тревожных дней до создания тревоги ?? – rohanagarwal94

+0

Я не уверен, что ваш конкретный вариант использования, но если вы знаете дату отмены в момент нажатия кнопки, вы можете создать будильник для его отмены. – jaibatrik

+0

Заранее спасибо за помощь. Надеюсь, что это работает. – rohanagarwal94