1

我有一个从广播中触发通知的警报接收器。完美运行。现在我添加了另一个通知,我喜欢单独有 2 个通知。开始第一个通知,稍后开始第二个通知,第二个通知取消第一个通知,所以我只看到第二个。我需要在通知栏上有 2 个通知。还删除“标志取消”不运行。

我的代码(第二次通知):

String ns2 = Context.NOTIFICATION_SERVICE;
            NotificationManager mNotificationManager2 = (NotificationManager) context.getSystemService(ns2);

            int icon = R.drawable.ic_launcherlight;
            CharSequence tickerText = not1[x];
            long when = System.currentTimeMillis();

            Notification notification = new Notification(icon, tickerText, when);

            CharSequence contentTitle = "Casual";
            CharSequence contentText = not1[x];

            Intent notificationIntent = new Intent("com.example.myapp", null, context, NotifyCasual.class);
            notificationIntent.putExtra("notify", not1[x]);
            PendingIntent contentIntent = PendingIntent.getActivity(context, 2, notificationIntent,PendingIntent.FLAG_CANCEL_CURRENT);



            notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);


            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

            String Sound = prefs.getString("sound", "");
notification.defaults |= Notification.DEFAULT_VIBRATE;
            notification.defaults |= Notification.FLAG_AUTO_CANCEL;
            notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;

            final int HELLO2 = 1;

            mNotificationManager2.notify(HELLO2, notification);
4

3 回答 3

2

你必须这样做。当您创建通知时,请按照此操作。

第一次通知:

mNotificationManager.notify(1, notifyDetails);

第二次通知:

mNotificationManager.notify(2, notifyDetails);
于 2013-01-18T12:22:16.607 回答
1

为了每次都必须为 PendingIntent 传递不同的 id 时获得新通知,

所以你必须创建一个动态id

int id = 0; // declare globally and save the id.
PendingIntent contentIntent = PendingIntent.getActivity(context, id,
                       notificationIntent,PendingIntent.FLAG_CANCEL_CURRENT);
id = id + 1;
于 2013-01-18T12:20:39.390 回答
0

使用 setData 使您的每个通知意图都独一无二。我使用 when=Calendar.getInstance().getTimeInMillis()

试试下面的代码

    /*create intent for show notification details when user clicks notification*/
    Intent intent =new Intent(getApplicationContext(), NotificationDetailsActivity.class);
    intent.putExtra(NOTIFICATION_DATA, notificationData);

    /*create unique this intent from  other intent using setData */
    intent.setData(Uri.parse("content://"+when));
    /*create new task for each notification with pending intent so we set Intent.FLAG_ACTIVITY_NEW_TASK */
    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);

    /*get the system service that manage notification NotificationManager*/
    NotificationManager notificationManager =(NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 

    /*build the notification*/
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
            getApplicationContext())
            .setWhen(when)
            .setContentText(notificationContent)
            .setContentTitle(notificationTitle)
            .setSmallIcon(smalIcon)
            .setAutoCancel(true)
            .setTicker(notificationTitle)
            .setLargeIcon(largeIcon)
            .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_VIBRATE| Notification.DEFAULT_SOUND)
            .setContentIntent(pendingIntent);

    /*Create notification with builder*/
    Notification notification=notificationBuilder.build();

    /*sending notification to system.Here we use unique id (when)for making different each notification
     * if we use same id,then first notification replace by the last notification*/
    notificationManager.notify((int) when, notification);
于 2013-01-18T12:16:17.560 回答