2013-10-25 3 views
0

Я разрабатываю приложение для Android, в котором я хочу показать новое сообщение в панели уведомлений с каждым новым уведомлением. Я могу показать уведомления в определенное время, но я хочу показать каждое уведомление с другим сообщением.Как показать другое сообщение с каждым уведомлением Android?

Ниже я вставляю код, который показывает два уведомления в указанное время. Я использовал класс диспетчера сигнализации для отображения уведомлений. MainActivity

Calendar calendar = Calendar.getInstance(); 

    calendar.setTime(new Date(formattedDate1)); 
    calendar.set(Calendar.MONTH, 9); 
    calendar.set(Calendar.YEAR, 2013); 
    calendar.set(Calendar.DAY_OF_MONTH, 25); 


    calendar.set(Calendar.HOUR_OF_DAY, 13); 
    calendar.set(Calendar.MINUTE, 11); 
    calendar.set(Calendar.SECOND, 0);  

    Intent myIntent = new Intent(MainActivity.this, MyReceiver.class); 
    myIntent.putExtra("myIntent", "Notification1"); 
    myIntent.setType("intent1"); 
    pendingIntent1 = PendingIntent.getBroadcast(MainActivity.this, 0, 
      myIntent, 0); 

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), 
      pendingIntent1); 

    Calendar calendar_new = Calendar.getInstance(); 

    // calendar_new.setTime(new Date(, month, day)) 

    calendar_new.set(Calendar.HOUR_OF_DAY, 13); 
    calendar_new.set(Calendar.MINUTE, 12); 
    calendar_new.set(Calendar.SECOND, 0); 

    Intent myIntentnew = new Intent(MainActivity.this, MyReceiver.class); 
    myIntentnew.setType("intent2"); 
    myIntentnew.putExtra("myIntentnew", "Notification2"); 
    pendingIntent2 = PendingIntent.getBroadcast(MainActivity.this, 1, 
      myIntentnew, 0); 

    alarmManager.set(AlarmManager.RTC, calendar_new.getTimeInMillis(), 
      pendingIntent2); 


} // end onCreate 

служба уведомления

private NotificationManager mManager; 
Notification notification; 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 
    super.onCreate(); 
} 

@SuppressWarnings("static-access") 
@Override 
public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 

    mManager = (NotificationManager) this.getApplicationContext() 
      .getSystemService(
        this.getApplicationContext().NOTIFICATION_SERVICE); 
    Intent intent1 = new Intent(this.getApplicationContext(), 
      MainActivity.class); 

    notification = new Notification(R.drawable.ic_launcher, 
      "This is a test message!", System.currentTimeMillis()); 


    intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP 
      | Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingNotificationIntent = PendingIntent.getActivity(
      this.getApplicationContext(), 0, intent1, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    notification.setLatestEventInfo(this.getApplicationContext(), 
      "We succeded", "hi!", pendingNotificationIntent); 

    mManager.notify(0, notification); 
} 

@Override 
public void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 

    mManager.cancelAll(); 
} 

Если кто-то может помочь мне с этим. Заранее спасибо

+0

«Я хочу показать каждое уведомление с другим сообщением». Что ты хочешь этим сказать? Вы генерируете уведомление hardcoded или получаете его с сервера? –

+0

на данный момент я генерирую hardcoded, –

ответ

1

изменение

mManager.notify(0, notification); 

в

mManager.notify(count , notification); 

где отсчет каждый раз, когда увеличение на 1.

mManager.notify(0, notification) 

сообщения заменить каждый раз

Intent serviceIntent = new Intent(YourService.class.getName()) 
    serviceIntent.putExtra("UserID", "123456"); 
    context.startService(serviceIntent); 

Когда запущена служба его onStartCommand() метод будет называться так в этом методе вы можете получить значение (UserID) от намерения объекта, например

public int onStartCommand (Intent intent, int flags, int startId){ 

String userID = intent.getStringExtra("UserID"); 

return START_STICKY; 
    } 
+0

Я пробовал ваше решение, но не показывал новое сообщение, а в качестве обновления я передавал статические значения даты здесь и статическое сообщение, но как только я могу показать новое сообщение, я принесу новое сообщение из база данных . –

+0

Я опробовал ваше решение, он показывает первое сообщение, но на следующий временной интервал он дает null-указатель Exception. Любая идея об этом. Я передаю свои пользовательские сообщения с намерением в MainActivity, код, для которого я показал выше –

+0

, может ли получить данные из onStartCommand()? переопределите это в своем сервисе http://stackoverflow.com/questions/3293243/android-pass-data-from-activity-to-service-using-an-intent –

1

Вы можете изменить этот mManager.notify (0, уведомление); mManager.notify ((int), когда, уведомление);

, где long when = System.currentTimeMillis();

Смежные вопросы