如何用每个Notification android显示不同的消息?

时间:2013-10-25 11:22:18

标签: android notifications

我正在开发一个Android应用程序,其中我想在通知栏中显示每条新通知的新消息。我能够在特定时间显示通知,但我想用不同的消息显示每个通知。

下面我粘贴了在指定时间显示两个通知的smaple代码。 我使用了Alarm manager类来显示通知。 的 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();
}

如果有人可以帮我这个。提前致谢

2 个答案:

答案 0 :(得分: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()方法,因此在此方法中,您可以从intent对象中检索值(UserID),例如

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

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

return START_STICKY;
  }

答案 1 :(得分:1)

您可以更改此manager.notify(0,通知); to manager.notify((int)when,notification);

where when when = System.currentTimeMillis();