2011-09-24 12 views
5

Wiem, jak rozpocząć powiadomienie X milisekund po jakimś zdarzeniu kliknięcia. Kod jak tenJak rozpocząć powiadamianie o niestandardowej dacie i godzinie?

 Timer timer = new Timer(); 
     TimerTask timerTask = new TimerTask() { 
      @Override 
      public void run() { 
       triggerNotification(); 
      } 
     }; 
     timer.schedule(timerTask, 3000); 

Jeżeli kod powiadomienia wygląda to

CharSequence title = "Hello"; 
CharSequence message = "Hello, Android!"; 

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
Notification notification = new Notification(R.drawable.icon, "A New Message!", System.currentTimeMillis()); 

Intent notificationIntent = new Intent(this, AndroidAlarmService.class); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(AndroidAlarmService.this, title, message, pendingIntent); 
notification.defaults = Notification.DEFAULT_SOUND; 
notification.flags |= Notification.FLAG_AUTO_CANCEL; 
notificationManager.notify(NOTIFICATION_ID, notification); 

Jak ustawić powiadomienia pojawiają się na zadaniu daty w określonym czasie, powiedzmy 1 października 7 PM?

Odpowiedz

16

Myślę, że najlepszym sposobem będzie stworzenie usługi, która ustawi powiadomienie, a następnie aktywację usługi przy użyciu numeru AlarmManager.
Oto mój kod do robienia tego. To jest kod na AlarmManager:

private void startAlarm() { 
    AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(int year, int month, int date, int hour, int minute, int second); 
    long when = calendar.getTimeInMillis();   // notification time 
      Intent intent = new Intent(this, ReminderService.class); 
      PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0); 
      alarmManager.set(AlarmManager.RTC, when, pendingIntent); 
     } 

Oto Usługa:

public class ReminderService extends IntentService { 
    private static final int NOTIF_ID = 1; 

    public ReminderService(){ 
     super("ReminderService"); 
    } 

    @Override 
     protected void onHandleIntent(Intent intent) { 
     NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     long when = System.currentTimeMillis();   // notification time 
     Notification notification = new Notification(R.drawable.icon, "reminder", when); 
     notification.defaults |= Notification.DEFAULT_SOUND; 
     notification.flags |= notification.FLAG_AUTO_CANCEL; 
     Intent notificationIntent = new Intent(this, YourActivity.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent , 0); 
     notification.setLatestEventInfo(getApplicationContext(), "It's about time", "You should open the app now", contentIntent); 
     nm.notify(NOTIF_ID, notification); 
    } 

} 
+0

A co może być struktura zmiennej 'when' jeśli jako' bergnam' powiedział na 1 października 7 PM ? 'długo kiedy = 01.10.2011 7 PM;'? – androniennn

+0

@bergnam wystarczy po prostu użyć obiektu Date ustawić datę, a następnie wywołać .getTime() – eladrich

+0

'SimpleDateFormat dateLongue = new SimpleDateFormat (" DD MM yyyy HH: mm: ss ");' i jak i dlaczego dzwoni .getTime? – androniennn

Powiązane problemy