2014-04-16 13 views
5

Mam pytanie dotyczące powiadomień lokalnych w systemie Android. Zajmuję się tworzeniem aplikacji, w której w pierwszej części muszę odbierać wszystkie spotkania firmy z mojego własnego serwera (to osiągnąłem), a druga część muszę powiadomić jeden dzień przed każdym spotkaniem, ale z powiadomieniami lokalnymi.Jak zaplanować lokalne powiadomienia na Androida?

W jaki sposób zaplanować lokalne powiadomienia w określonym dniu?

+1

wyboru [ta] (http://stackoverflow.com/questions/21461191/alarmmanager-fires-alarms-at-wrong-time/21461246#21461246) i [this] (http://developer.android.com/training/scheduling/alarms. html) – Skynet

Odpowiedz

12

Aby zaplanować lokalnej zgłoszenie trzeba wiedzieć kilka rzeczy, które są wykorzystywane do planowania powiadomienie jak

BroadcastReceivers IntentFilters AlarmManager NotificationService PendingIntent

W główną działalność wykonaj następujące czynności

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     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(); 
     cal.add(Calendar.SECOND, 15); 
     alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), broadcast); 
    } 

Powyższy kod zaplanuje alarm po 15 sekundach. Po 15 sekundach będzie transmitować powiadomienie.

działanie określone w intencji konstruktora jest zdefiniowana w AndroidManifest.xml

Aby w pełni zrozumieć funkcjonowanie lokalnej notyfikacji i zobaczyć czek próbka kodu powiadomienie ten artykuł - http://www.singhajit.com/schedule-local-notification-in-android/

+0

co zrobić, aby powtórzyć proces? – Saty

+1

Użyj HOUR_OF_DAY dla kalendarza i setRepeatingAlarm 'Kalendarz cal = Calendar.getInstance(); cal.add (Calendar.HOUR_OF_DAY, 09); cal.add (Calendar.MINUTE, 0); cal.add (Calendar.SECOND, 0); alarmManager.setRepeating (AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 24 * 60 * 60 * 1000, broadcast); ' –

+1

@Saty: czy możesz zaakceptować to jako odpowiedź, jeśli pomogłoby to rozwiązać twój problem, w przeciwnym razie umieść komentarz, że nie pomogło. Pomoże to innym w szukaniu podobnych pytań. – bianca