2017-01-06 4 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

これは、アラームIDがオーバーライドされているということは、アラームを設定し、各アラームに1000個のIDを指定したことを意味します。

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

最後の時刻を設定したときに、アラームマネージャが前回の時刻をid 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; 
      } 

複数のアラームを追加するには、この方法を使用してください。これは作業コードです。

関連する問題