【发布时间】:2019-11-28 09:46:16
【问题描述】:
在这里我附加了我的通知实用程序类,我试图将我的通知分组,但每次我收到单独的通知时,我都会传递所有通知唯一的通知 ID。当我想从面板中删除特定通知时使用它。
public class NotificationUtils {
private static final String TAG = "NotificationUtilss";
private static final String CHANNEL_ID = "channel";
private static final String CHANNEL_NAME = "my_channel";
private static final String GROUP_KEY_PN = "com.demo.app.PN";
private static final String URL = "url";
private static final String ACTIVITY = "activity";
Map<String, Class> activityMap = new HashMap<>();
private Context mContext;
public NotificationUtils(Context mContext) {
this.mContext = mContext;
//Populate activity map
activityMap.put("Activity1", Activity1.class);
activityMap.put("Activity2", Activity2.class);
activityMap.put("Activity3", Activity3.class);
}
public void displayNotification(NotificationVO notificationVO, Intent resultIntent) {
{
String notification_id = notificationVO.getNotification_id();
String message = notificationVO.getMessage();
String title = notificationVO.getTitle();
String iconUrl = notificationVO.getIconUrl();
String action = notificationVO.getAction();
String destination = notificationVO.getActionDestination();
Bitmap iconBitMap = null;
if (iconUrl != null) {
iconBitMap = getBitmapFromURL(iconUrl);
}
final int icon = R.drawable.logo;
PendingIntent resultPendingIntent;
if (URL.equals(action)) {
Intent notificationIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(destination));
resultPendingIntent = PendingIntent.getActivity(mContext, 0, notificationIntent,
0);
} else if (ACTIVITY.equals(action) && activityMap.containsKey(destination)) {
resultIntent = new Intent(mContext, activityMap.get(destination));
resultPendingIntent =
PendingIntent.getActivity(
mContext,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
} else {
resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
resultPendingIntent =
PendingIntent.getActivity(
mContext,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
}
final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext,
CHANNEL_ID);
Notification notification;
if (iconBitMap == null) {
//When Inbox Style is applied, user can expand the notification
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.addLine(message);
inboxStyle.setBigContentTitle(title);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
notification = mBuilder
.setTicker(title)
.setAutoCancel(true)
.setContentTitle(title)
.setContentText(message)
.setContentIntent(resultPendingIntent)
.setStyle(inboxStyle)
.setWhen(new Date().getTime())
.setSmallIcon(R.drawable.logo)
.setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(),
icon))
.setGroup(GROUP_KEY_PN)
.setGroupSummary(true)
.build();
}
}
NotificationManager notificationManager = (NotificationManager)
mContext.getSystemService(Context.NOTIFICATION_SERVICE);
// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME,
NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
NotificationManagerCompat.from(mContext).notify(Integer.parseInt(notification_id),
notification);
}
}
}
我需要帮助,仅应用通知样式是对通知进行分组,但应用组和组摘要不起作用。
【问题讨论】:
-
您是否尝试过删除组摘要?
-
@ShripadJadhav 是的,我试过了,但它不起作用
标签: android push-notification notifications