1

ブロードキャストから通知を送信するアラームレシーバーがあります。完璧に動作します。今、私は別の通知を追加しました.2つの通知を別々に持っているのが好きです. 最初の通知を開始し、後で 2 番目の通知を開始し、2 番目の通知は最初の通知をキャンセルするので、2 番目のみが表示されます。通知バーに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);

2 回目の通知の場合:

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.i use 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 に答える