我使用操作按钮创建通知。单击动作按钮时,将调用广播接收器。我在意图
中传递通知ID在广播接收器中,我执行以下操作
int notifId = intent.getIntExtra(Constants.NOTIF_ID, 0);
NotificationManager mNotificationManager =(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel(notifId);
这就是我生成通知的方式
int notifId = Util.random.nextInt(9000);
Intent mIntent = new Intent(con, NotificationBroadcastReceiver.class);
mIntent.putExtra(Constants.NOTIF_CODE, codeReason);
mIntent.putExtra(Constants.NOTIF_ID, notifId);
PendingIntent mPendingIntent = PendingIntent.getBroadcast(con, 0, mIntent , 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(con)
.setSmallIcon(R.drawable.icon)
.setContentTitle("test")
.setPriority(Notification.PRIORITY_MAX)
.setAutoCancel(true)
.addAction(R.drawable.ic_launcher, "action", mPendingIntent);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(con, MainActivity.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(con, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =(NotificationManager) con.getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS);
// mId allows you to update the notification later on.
mNotificationManager.notify(notifId, mBuilder.build());
然而,虽然我知道我正在使用代码(使用日志语句),但通知不会被隐藏/解散。
为什么?
答案 0 :(得分:1)
startForground()
检查通知未与其他服务绑定。答案 1 :(得分:1)
我找到了答案。我“认为”由于2个待定意图具有相同的con和req代码,它们最终会修改它们的意图值。我通过使用2个不同的请求代码来修复它,以确保唯一的Pending Intents。因此,我得到了相同的通知