2014-04-16 11 views
5

Ich habe eine Frage zu lokalen Benachrichtigungen in Android. Ich entwickle eine Anwendung, wo im ersten Teil alle Sitzungen der Firma meines eigenen Servers erhalten müssen (Dies habe ich erreicht), und der zweite Teil muss ich einen Tag vor jeder Sitzung, aber mit lokalen Benachrichtigungen benachrichtigen.Wie planen lokale Benachrichtigungen Android?

Wie planen lokale Benachrichtigungen zu einem bestimmten Zeitpunkt?

+1

Check [Diese] (http://stackoverflow.com/questions/21461191/alarmmanager-fires-alarms-at-wrong-time/21461246#21461246) und [dies] (http://developer.android.com/training/scheduling/alarms. html) – Skynet

Antwort

12

lokale Benachrichtigung So planen Sie müssen einige der Dinge wissen, die verwendet werden, wie

BroadcastReceivers IntentFilters die Benachrichtigung planen Alarmmanager NotificationService PendingIntent

In MainActivity gehen Sie wie folgt

@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); 
    } 

Der obige Code wird nach 15 Sekunden einen Alarm auslösen. Nach 15 Sekunden wird der notificationIntent gesendet.

die Aktion in der Intent-Konstruktor angegeben ist in der

AndroidManifest.xml definiert, um die volle Arbeits der lokalen Anmeldung zu verstehen und eine Probe Benachrichtigungscode lesen Sie in diesem Artikel zu sehen - http://www.singhajit.com/schedule-local-notification-in-android/

+0

was zu tun, um den Prozess zu wiederholen? – Saty

+1

Verwenden Sie die HOUR_OF_DAY für Kalender und setRepeatingAlarm 'Kalender cal = Calendar.getInstance(); cal.add (Calendar.HOUR_OF_DAY, 09); cal.add (Kalender.MINUTE, 0); cal.add (Kalender.SECOND, 0); alarmManager.setRepeating (AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 24 * 60 * 60 * 1000, Broadcast); ' –

+1

@Saty: Könnten Sie dies als Antwort akzeptieren, wenn dies Ihr Problem zu lösen half, ansonsten setzen Sie einen Kommentar, dass es hat nicht geholfen. Es würde anderen helfen, ähnliche Fragen zu stellen. – bianca

Verwandte Themen