2011-08-16 17 views
6

Desidero sapere come impostare l'ora per la notifica. Voglio impostare la notifica ogni cinque minuti, quindi aiutami a farlo.Mostra notifica Android ogni cinque minuti

public class FirstActivity extends Activity 
{ 
    private static final int HELLO_ID = 1; 
    //public static final int FLAG_AUTO_CANCEL = 0;`enter code here` 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.firstactivity); 

     String ns = Context.NOTIFICATION_SERVICE; 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 

     int icon = R.drawable.icon; 
     CharSequence tickerText = "Hello"; 
     long when = System.currentTimeMillis(); 

     Notification notification = new Notification(icon, tickerText, when); 

     RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.statusbarnotification); 
     contentView.setImageViewResource(R.id.image, R.drawable.icon); 
     contentView.setTextViewText(R.id.text, "Hello, this message is in a custom expanded view"); 
     notification.contentView = contentView; 
     notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; 
     Intent notificationIntent = new Intent(getApplicationContext(), SecondActivity.class); 
     //PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
     notification.contentIntent = contentIntent; 
     mNotificationManager.notify(HELLO_ID, notification); 
    } 

} 

risposta

3

Penso che il modo migliore sarà creare un servizio che imposta la notifica e quindi attivare il servizio utilizzando AlarmManager.
Questo è il codice per l'AlarmManager:

private void startAlarm() { 
    AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE); 
    long when = System.currentTimeMillis();   // notification time 
    Intent intent = new Intent(this, ReminderService.class); 
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0); 
    alarmManager.setRepeating(AlarmManager.RTC, when, (AlarmManager.INTERVAL_FIFTEEN_MINUTES/3), pendingIntent); 
} 

per controllare l'intervallo utilizzare i valori costanti o semplicemente inserire il proprio valore (in millisecondi).

Ecco il servizio:

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

} 
+1

Grazie è un pò di quello che volevo, ma ho una domanda per voi su questo. Come imposto il 'AlarmManager' all'interno della Service Class in modo che quando controlla il database e abbia nuove cose per mostrare la notifica? (Se è possibile spiegare nel codice sarebbe meglio, non c'è bisogno del codice del database ... solo l'AlarmManager all'interno della classe di servizio con l'istruzione 'if') –

+1

Quando' StartAlarm() 'ha chiamato ?? Non ricevo alcuna notifica .. il codice non sta funzionando :( – Neo