android中未显示多个通知
在我的android应用程序中,我愿意在某一天显示多个通知,因为我使用的是Alarm Manager和广播接收器,问题是当我使用Alarm时,它工作正常,但当我添加通知生成器来显示通知时,它不工作 这是我的主要活动android中未显示多个通知,android,notifications,Android,Notifications,在我的android应用程序中,我愿意在某一天显示多个通知,因为我使用的是Alarm Manager和广播接收器,问题是当我使用Alarm时,它工作正常,但当我添加通知生成器来显示通知时,它不工作 这是我的主要活动 public static final String ACTION_ONE = "Hello, Test Message 1"; public static final String ACTION_TWO = "Hello, Test Message 2"; @Override
public static final String ACTION_ONE = "Hello, Test Message 1";
public static final String ACTION_TWO = "Hello, Test Message 2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
Intent myIntent1 = new Intent(this, AlarmBroadCustReciver.class);
myIntent1.setAction(ACTION_ONE);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this, 1253, myIntent1,
PendingIntent.FLAG_UPDATE_CURRENT);
// Set the time for first alarm here
cal.set(2015, 10, 20, 15, 55);
alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent1);
Intent myIntent2 = new Intent(this, AlarmBroadCustReciver.class);
myIntent2.setAction(ACTION_TWO);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 1263, myIntent2,
PendingIntent.FLAG_UPDATE_CURRENT);
// Set the time for second alarm here
cal.set(2015, 10, 20, 15, 56);
alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent2);
// In this way set time for all the rest of the alarms
这是广播接收机
public class AlarmBroadCustReciver extends BroadcastReceiver {
public static final String ACTION_ONE = "Hello, welcome to the Server1";
public static final String ACTION_TWO = "Hello, welcome to the Server2";
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
builder.setContentTitle(context.getString(R.string.app_name));
if (intent.getAction().equalsIgnoreCase(ACTION_ONE)) {
builder.setContentText("Alarm one");
} else {
builder.setContentText("Alarm two");
}
Notification notification = builder.build();
int notificationID = 0;
notificationManager.notify(notificationID, notification);
您需要为每个通知传递不同的通知id。如果您传递相同的id(即,在您的情况下为0),现有通知将使用新数据更新。
更改通知id:例如,使用一个变量并递增它。notificationid++我有一个类似的问题,我正在用不同的ID创建多个通知,但是,当我单击其中一个时,只有第一个打开了特定的屏幕,所有顺序通知都被忽略(单击它们没有做任何事,它们只是被取消)。然后我试着这样做:
intent.setAction(context.getPackageName() + "." + notificationId);
这意味着每个独特的通知也有其独特的意图,在这种情况下,意图不会被忽略,并且每个通知都会打开所需的屏幕。我必须注意,我的意图是相同的(例如NoteDetails.class),所以我想我必须以某种方式将它们分开……我很高兴它无论如何都能起作用。对我来说是一个正确的方向
我只需要更改传递给AlarmManager的PendingEvent中的requestCode,因此它的值不同
旧代码:
PendingIntent pI = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
新代码:
PendingIntent pI = PendingIntent.getBroadcast(context, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
我的问题是,即使第一次通知也没有显示。我是否可以使用一些示例检查此示例并实现上述逻辑。我使用了不同的requestCodes,但将标志设置为0。将其设置为
pendingent.FLAG\u UPDATE\u CURRENT
解决了问题。