複数の Android 通知がありますが、Web サーバーからメッセージを送信すると、Android デバイスがステータス バーに新しい通知アイコンを作成します。未読通知の数をカウントし、単一のアイコンで表示しstatusbar
、通知が読み取られると、通知は未読通知カウントの数を変更する必要があります。どうすればいいですか?この画像では「3 その他」のように見えます:通知アイコン
3 に答える
ここで答えをチェックしてください:複数の通知がある場合にカウンターを与える方法
設定するだけですNotification.number
:
Notification notification = new Notification(R.drawable.direction, "Cool Notification",
System.currentTimeMillis());
/********LIKE THIS*********/
notification.number = notificationCount++;
/********LIKE THIS*********/
notification.setLatestEventInfo(context, "Cool Notification Title",
"updated notificaiton message", null);
NotificationManager nm = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
nm.notify(R.id.my_motification, notification);
NotificationManager.notify
常に同じ ID を使用して、メソッドを介して通知を送信する必要があります。ドキュメントにあるように、id はアプリケーション内のその通知の一意の識別子です。同じ ID を再利用すると、その通知のテキストと番号が更新されるだけです。
ユーザーがいつ通知をクリックしたかを確認するには、PendingIntent を提供する必要があります (チュートリアルを参照してください)。ユーザーがいつ通知をクリアしたかを確認するには、Api レベル 11 でのみ使用できるNotification.Builderを使用する必要があります。
このコードは私にとってはうまくいきます:
Notification n = new Notification(R.drawable.yourownpicturehere,
getString(R.string.noticeMe),
System.currentTimeMillis());
PendingIntent i=PendingIntent.getActivity(this, 0,
new Intent(this, NotifyActivity.class),0);
n.setLatestEventInfo(getApplicationContext(),
getString(R.string.title),
getString(R.string.message), i);
n.number=++count;
n.flags |= Notification.FLAG_AUTO_CANCEL;
n.flags |= Notification.DEFAULT_SOUND;
n.flags |= Notification.DEFAULT_VIBRATE;
n.ledARGB = 0xff0000ff;
n.flags |= Notification.FLAG_SHOW_LIGHTS;
// Now invoke the Notification Service
String notifService = Context.NOTIFICATION_SERVICE;
NotificationManager mgr = (NotificationManager) getSystemService(notifService);
mgr.notify(NOTIFICATION_ID, n);
完全なチュートリアルについては、このリンクに従ってください。
私はn.number=++count;
、通知をカウントする責任があると思います
番号ごとに異なるビットマップが必要になり、残っている通知の数に対応するビットマップを表示するようにアイコンを設定します。
通知を追跡するには、SharedPreferences でカウンターを設定し、新しい通知ごとにカウンターを追加し、通知が読み取られると 1 ずつ減らします (すべての通知を一度に表示する場合はゼロにします)。