2011-08-16 94 views
6

我想知道如何設置通知時間。我想每五分鐘設置一次通知, 所以幫助我做到這一點。每五分鐘顯示一次android通知

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

} 

回答

3

我認爲最好的方法是創建一個服務來設置通知,然後使用AlarmManager激活服務。
這對於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); 
} 

控制間隔使用常量或剛剛插入自己的值(以毫秒爲單位)。

這裏的服務:

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

由於是有點什麼,我想,但我對你這個問題。如何在Service Class中設置AlarmManager,以便在它檢查數據庫並有新東西然後顯示通知? (如果你可以在代碼中解釋會更好,不需要數據庫的代碼......只需使用'if'語句在服務類中的AlarmManager) –

+1

當'StartAlarm()'調用?我沒有得到任何通知..代碼不workin克:( – Neo

相關問題