2017-12-11 4 views
1

내 알람 관리자는 정상적으로 작동하지만 알림 시간이 지나면 앱을 열 때마다 알림이 전송됩니다. 알람 관리자에게 알림을 1 회만하고 알람 시간이 지나면 중지해야한다고 어떻게 말 할 수 있습니까?알람 관리자가 날짜 이후에 알림을 작성합니다.

public void startTimer(int year,int month, int day,int hour,int minute) { 

      int time_year; 
      int time_month; 
      int time_day; 
      int time_hour; 
      int time_minute; 

      time_minute = minute; 
      time_hour = hour; 
      time_month = month-1; // BC 0 januar and 11 dezember 
      time_day = day; 
      time_year = year; 

      Calendar calendar = Calendar.getInstance(); 
      calendar.set(Calendar.YEAR, time_year); 
      calendar.set(Calendar.MONTH, time_month); 
      calendar.set(Calendar.DAY_OF_MONTH, time_day); 
      calendar.set(Calendar.HOUR_OF_DAY, time_hour); 
      calendar.set(Calendar.MINUTE, time_minute); 
      calendar.set(Calendar.SECOND, 1); 

      Intent intent = new Intent(getActivity(), AlarmReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity().getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
      AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(ALARM_SERVICE); 
      alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 


     } 

경보 수신기에 CLASS

public class AlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.w("myApp", "ALARM RECEIVER RECEIVED"); 

     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     Intent intent1 = new Intent(context,MainActivity.class); 
     intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     //if we want ring on notifcation then uncomment below line// 
//  Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context,100,intent1, PendingIntent.FLAG_UPDATE_CURRENT); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(context). 
       setSmallIcon(R.drawable.online_icon). 
       setContentIntent(pendingIntent). 
       setContentText("Ein Event startet bald"). 
       setContentTitle("Hast du heute schon was vor?"). 
//    setSound(alarmSound). 
     setAutoCancel(true); 
     notificationManager.notify(100,builder.build()); 

    } 
} 
+0

모두 보류 의도에 대해 동일한 ID를 사용하여 시도 알람 후 내가 만약 그들이 다른 볼로

그래서, 추가 검사를 추가, 어쩌면이 문제에게 tipp에 대한 – Rainmaker

+0

감사의 원인 그러나 문제는 여전히 여기에 있습니다. – Georq

+0

더 자세히 보았습니다. 해결책이있는 것 같습니다. 시도해보십시오. – Rainmaker

답변

1

워드 프로세서에 따르면이 문제는 정확한 시간과 다음 반복 사이에 언제든지 발생할 수 있습니다. 따라서 매일 오후 2시에 알람을 설정하면 오후 2시에서 다음 날 사이에 알람이 울릴 수 있습니다. 시간이 이전 또는

long timeToAlarm = calendar.getTimeInMillis(); 
if (calendar.getTimeInMillis() < System.currentTimeMillis()){ 
    timeToAlarm += (24*60*60*1000); 
}; 
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
관련 문제