2017-01-06 3 views
0

Я хочу сделать функцию, которая позволяет, когда я нажимаю кнопку Я выбираю дату и после получения уведомления в эти даты Этот код позволяет мне получать последнее уведомление, а не другие.Несколько уведомлений с диспетчером аварийных сообщений

String dtStart = String.valueOf(hourOfDay) + ":" + String.valueOf(minute); 
Calendar calendar; 
Intent intent1; 
calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
calendar.set(Calendar.MINUTE, minute); 
calendar.set(Calendar.SECOND, 0); 

intent1 = new Intent(getActivity(), AlarmReceiver.class); 
intent1.putExtra("titrefr",titlefr); 
intent1.putExtra("contentfr",contentfr); 
intent1.putExtra("contentar",content); 
intent1.putExtra("titrear",title); 
intent1.putExtra("audio",stepAudio); 
intent1.putExtra("image",image); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 1000, intent1, PendingIntent.FLAG_UPDATE_CURRENT); 

AlarmManager am = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE); 
// am.set(AlarmManager.ELAPSED_REALTIME,calendar.getTimeInMillis(),pendingIntent); 

am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

ответ

0

Это происходит только потому, что идентификатор тревоги переопределяется, когда вы устанавливаете будильник, и вы даете 1000 идентификаторов каждому сигналу.

PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 1000, intent1, PendingIntent.FLAG_UPDATE_CURRENT); 

Итак, когда вы устанавливаете последний раз. Менеджер времени в последний раз установил идентификатор 1000, так что в последний раз срабатывает будильник. Я просто добавляю метод, который поможет вам добавить несколько сигналов тревоги.

private String setAlarm(int year, int month, int day, int hour, int min) { 
       String value = ""; 
       calendar = Calendar.getInstance(); 
       calendar.set(Calendar.YEAR, year); 
       calendar.set(Calendar.MONTH, month); 
       calendar.set(Calendar.DAY_OF_MONTH, day); 
       calendar.set(Calendar.HOUR_OF_DAY, hour); 
       calendar.set(Calendar.MINUTE, min); 
       calendar.set(Calendar.SECOND, 00); 
       if (calendar.getTimeInMillis() < System.currentTimeMillis()) { 
        Toast.makeText(AddDrugFormActivity.this, "Select Valid Time", Toast.LENGTH_LONG).show(); 
        value = "INValid"; 
       } else { 
        value = "Valid"; 
        Intent intentAlarm = new Intent(AddDrugFormActivity.this, AlarmReciever.class); 
    SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(context) 
        int id = preferences.getInt("id", 0); 
        PendingIntent pIntent = PendingIntent.getBroadcast(AddDrugFormActivity.this, id, intentAlarm, 0);// set id 0 if single alarm require 
        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent); 
        id = id + 1; 
        editor = preferences.edit(); 
        editor.putInt("id", id); 
        editor.commit(); 

       } 
       return value; 
      } 

Вы просто используете этот метод для добавления нескольких сигналов тревоги. Это рабочий код.

Смежные вопросы