Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android多通知广播接收器_Java_Android - Fatal编程技术网

Java Android多通知广播接收器

Java Android多通知广播接收器,java,android,Java,Android,我正在尝试为应用程序中的每个提醒执行多个通知。我在这里发现了一些线索,每个通知都可以使用唯一的id来实现,但它不起作用。我只收到一个通知,它被最后一个通知集覆盖。另外,我想知道如何在设备重新启动后保持通知的完整性。这是我的密码 //call notification activation Intent Intent intent = new Intent(getBaseContext(), AlarmReceiver.class); PendingIntent pendingI

我正在尝试为应用程序中的每个提醒执行多个通知。我在这里发现了一些线索,每个通知都可以使用唯一的id来实现,但它不起作用。我只收到一个通知,它被最后一个通知集覆盖。另外,我想知道如何在设备重新启动后保持通知的完整性。这是我的密码

 //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放在里面,因为这也是一个被请求的整数