Java Android多通知广播接收器
我正在尝试为应用程序中的每个提醒执行多个通知。我在这里发现了一些线索,每个通知都可以使用唯一的id来实现,但它不起作用。我只收到一个通知,它被最后一个通知集覆盖。另外,我想知道如何在设备重新启动后保持通知的完整性。这是我的密码Java Android多通知广播接收器,java,android,Java,Android,我正在尝试为应用程序中的每个提醒执行多个通知。我在这里发现了一些线索,每个通知都可以使用唯一的id来实现,但它不起作用。我只收到一个通知,它被最后一个通知集覆盖。另外,我想知道如何在设备重新启动后保持通知的完整性。这是我的密码 //call notification activation Intent Intent intent = new Intent(getBaseContext(), AlarmReceiver.class); PendingIntent pendingI
//call notification activation Intent
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
报警接收器类
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//creating unique id for each specific notification
int ID = (int) ((new Date().getTime()/1000L) % Integer.MAX_VALUE);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notification = new Intent(context,MainActivity.class);
notification.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pi = PendingIntent.getActivity(context,0,notification,0);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mynotification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_date_range_black_48dp)
.setContentTitle("note taker")
.setContentText("you have a reminder about a note")
.setAutoCancel(true)
.setContentIntent(pi)
.setSound(defaultSoundUri)
.setVibrate(new long[]{1000,1000,1000,1000,1000});
notificationManager.notify(ID,mynotification.build());
}
}
尝试将不同的请求代码和
pendingent.FLAG\u UPDATE\u CURRENT
作为挂起意图的标志,并进行如下检查
PendingIntent pi = PendingIntent.getActivity(context, new Random().nextInt(1000000), notification, PendingIntent.FLAG_UPDATE_CURRENT);
我在这里发现了一些线索,每个通知都可以使用唯一的id来实现,但它不起作用。我只收到一个通知,它被最后一个通知集覆盖
我认为问题不在于您的通知,而在于您的AlarmManager
。
尝试为每个pendingent
使用不同的ID,并将标志设置为pendingent.flag\u ONE_SHOT
您的呼叫意图应如下所示:
//call notification activation Intent
Intent intent = new Intent(getBaseContext(), AlarmReciever.class);
int RQS_1 = (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
非常感谢你!我的问题是我忘了使用更改请求代码。你用RQS做的。我把我的通知Id放在里面,因为这也是一个被请求的整数