【发布时间】:2019-03-29 04:20:00
【问题描述】:
我正在使用FCM 获取新通知,我可以毫无问题地显示,但是当我打开应用程序时,我的所有通知都消失了
这是我创建新通知的代码
final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
mContext,mContext.getString(R.string.default_notification_channel_id));
Notification notification;
notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0)
.setAutoCancel(true)
.setContentTitle(title)
.setContentIntent(resultPendingIntent)
.setStyle(inboxStyle)
.setWhen(getTimeMilliSec(timeStamp))
.setSmallIcon(R.drawable.notification_icon)
.setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), icon))
.setContentText(message)
.build();
NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
CharSequence name = "my_channel";
String Description = "This is my channel";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(mContext.getString(R.string.default_notification_channel_id), name, importance);
mChannel.setDescription(Description);
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mChannel.setShowBadge(false);
notificationManager.createNotificationChannel(mChannel);
}
int id = (int) System.currentTimeMillis();
notificationManager.notify(id, notification);
当点击通知时,它会打开一个包含额外数据的活动 我的意图
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
resultIntent.putExtra("message", "wwwwwwww");
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
mContext,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
);
现在,当我单击任何通知时,它会打开 MainActivity,其中包含一些 Main Activity 所依赖的额外值。
但是当我点击一个通知并启动活动时,所有其他通知都消失了。那么,我怎样才能防止这种情况并仅隐藏点击的通知,以便用户可以看到其他通知
【问题讨论】:
-
我认为设置 Autocancel false 可以工作
-
我也试过了:/
-
.setPriority(Notification.PRIORITY_HIGH)怎么样 -
为通知提供不同的 id 可能会解决您的问题。也将相同的 id 传递给待处理的意图。
-
@primo
int id = (int) System.currentTimeMillis(); notificationManager.notify(id, notification);已经这样做了
标签: java android firebase-cloud-messaging android-notifications