2011-08-16 13 views
6

Chcę wiedzieć, jak ustawić czas powiadomienia. Chcę ustawić powiadomienie co pięć minut, , więc pomóż mi to zrobić.Pokaż powiadomienie z Androidem co pięć minut

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

} 

Odpowiedz

3

Myślę, że najlepiej będzie stworzyć usługę, która ustawi powiadomienie, a następnie aktywuje usługę za pomocą Menedżera alarmów.
To jest kod na 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); 
} 

Aby kontrolować odstęp używać wartości stałe lub po prostu wstawić własną wartość (w milisekundach).

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

} 
+1

Dzięki jest trochę tego, co chciałem, ale mam do ciebie pytanie na ten temat. W jaki sposób ustawić 'AlarmManager' w klasie Service tak, aby podczas sprawdzania bazy danych i nowych rzeczy pokazywać powiadomienia? (Jeśli potrafisz wyjaśnić w kodzie byłoby lepiej, nie potrzebujesz kodu bazy danych ... tylko AlarmManager wewnątrz klasy usług z instrukcją 'if') –

+1

Kiedy' StartAlarm() 'jest wywołane? Nie dostaję żadnego powiadomienia .. kod nie jest workin g :( – Neo

Powiązane problemy