1

我目前正在尝试测试我的代码以确保正确设置通知。我这样做的方式是设置 3 个不同的警报,每隔一分钟显示一个通知。但问题是,1 有效,但我从未见过其他两个。我的代码:


String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);

    Notification.Builder builder = new Notification.Builder(context)
                                    .setTicker(intent.getStringExtra("event")+"-"+intent.getStringExtra("location"))
                                    .setWhen(System.currentTimeMillis())
                                    .setContentTitle(intent.getStringExtra("event"))
                                    .setContentText(intent.getStringExtra("time_start")+"-"+intent.getStringExtra("location"))
                                    .setSmallIcon(R.drawable.ic_launcher);
    Notification notification = builder.getNotification();
    mNotificationManager.notify(intent.getIntExtra("id", 0),notification);

它获得的意图中额外的“id”是递增的数字,例如 1、2、3。我正在使用AlarmManager. 我认为只要第一个参数notify是唯一的,它就会显示通知,但它还没有。这有什么原因吗?提前致谢。

4

1 回答 1

0

由于 NoBug 关于PendingIntents 的观点并没有真正重新创建一个新实例,而只是检索了最后一个实例,因此在进行了一些挖掘之后,我发现这不仅仅是说PendingIntent.FLAG_CANCEL_CURRENT. 当使用它作为getBroadcast()or的参数时getActivity(),它所做的只是使用旧的并刷新它。它没有覆盖Intent它传递的旧实例,而是仍然使用它,只是更改了附加内容。但即便如此,由于某种原因,它实际上并没有按照它所说的那样做,至少在我的情况下,目标是让通知一个接一个地弹出,其中大部分是相同的附加内容,当然减去时间。

所以我发现 usingintent.setAction("com.example"+System.currentTimeInMillis)可以完成工作。这样做是Intent完全区分的,所以当你创建一个新的时,它实际上只是一个不同的动作,不管PendingIntent. 我真的会建议任何人真正详细说明我的这个理论,因为它实际上只是试错的猜测。

于 2012-07-11T06:34:42.113 回答