Этот метод из моего класса Helper для отправки уведомлений.Я вызываю этот метод в цикле for.
synchronized public void sendNotification(String app, String actionId, String notificationTitle, String notificationText) {
if (SessionManager.isUserLoggedIn()) {
//Initial validation before sending the notifications
if (NullCheckUtils.isEmpty(context)) return;
//If notification is already sent, this action id will be available in map, so need to send notification again
if (notificationMap.get(actionId) != null) return;
notificationMap.put(actionId, notificationCounterId);
//Preparing notification manager for sending notifications
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
//Customizing notification content's to be displayed
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_launcher)
.setAutoCancel(true)
.setContentTitle(notificationTitle)
.setStyle(new NotificationCompat.BigTextStyle().bigText(notificationText))
.setLargeIcon(icon)
.setChannelId(channelId)
.setContentText(notificationText);
//Defualt loading of Intent when the body of notification is clicked
Intent intent = new Intent(context, FunctionMenuActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntent(intent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
Intent openIntent = new Intent(context, NotificationReceiver.class);
openIntent.putExtra("notificationId", notificationMap.get(actionId) + "");
openIntent.setAction(Constants.Notification.YES_ACTION);
PendingIntent pendingIntentYes = PendingIntent.getBroadcast(context, 1, openIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.ic_launcher, context.getString(R.string.open), pendingIntentYes);
Intent dismissIntent = new Intent(context, NotificationReceiver.class);
dismissIntent.putExtra("notificationId", actionId);
dismissIntent.setAction(Constants.Notification.STOP_ACTION);
PendingIntent pendingIntentNo = PendingIntent.getBroadcast(context, 1, dismissIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.ic_launcher, context.getString(R.string.close), pendingIntentNo);
System.out.println("Data Check:" + notificationMap.get(actionId) + " : " + actionId);
notificationManager.notify(notificationMap.get(actionId), mBuilder.build());
notificationCounterId++;
}
}
За ним следует мой класс приемника, где я получаю события action из событий Yes & Stop action.В обоих случаях я получаю уведомление одинаково каждый раз.Ожидаемый результат - получение идентификатора уведомления, который я передаю в комплекте намерений.Может ли кто-нибудь объяснить мне, что я здесь не так делаю.
public class NotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Constants.Notification.YES_ACTION.equals(action)) {
String notificationId = intent.getStringExtra("notificationId");
context.startActivity(new Intent(context, FunctionMenuActivity.class));
Toast.makeText(context, "YES CALLED", Toast.LENGTH_SHORT).show();
System.out.println("Data Check:"+action+" : "+notificationId);
} else if (Constants.Notification.STOP_ACTION.equals(action)) {
String notificationId = intent.getStringExtra("notificationId");
NotificationHelper.getInstance().removeNotification(notificationId);
Toast.makeText(context, "STOP CALLED: " + notificationId, Toast.LENGTH_SHORT).show();
System.out.println("Data Check:"+action+" : "+notificationId);
}
}
}