У меня есть пользовательское уведомление с помощью кнопки действия:Отклонить текущее уведомление о Действии щелкнуло
public class NotificationReceiver extends com.parse.ParsePushBroadcastReceiver {
@Override
public void onPushReceive(Context context, Intent intent) {
...
NotificationActivity notification = new NotificationActivity();
notification.createNotification(context, message, notificationId);
Log.i("tag", "Notification Received!");
}
public class NotificationActivity {
public int notificationId;
public void createNotification(Context context, String message, String studentId, String notificationId){
this.notificationId = Integer.parseInt(notificationId);
// manager
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// notification
Notification.Builder mBuilder = new Notification.Builder(context);
mBuilder.setContentTitle("My Title");
mBuilder.setContentText(message);
mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
mBuilder.setAutoCancel(true);
mBuilder.setStyle(new Notification.BigTextStyle()
.bigText(message));
// cancel intent
Intent cancelIntent = new Intent(context, CancelNotification.class);
Bundle extras = new Bundle();
extras.putInt("notification_id", this.notificationId);
cancelIntent.putExtras(extras);
PendingIntent pendingCancelIntent =
PendingIntent.getBroadcast(context, 0, cancelIntent, PendingIntent.FLAG_UPDATE_CURRENT) ;
mBuilder.addAction(R.drawable.notification_close, "Fechar", pendingCancelIntent);
// notify
Notification notification = mBuilder.build();
notificationManager.notify(Integer.parseInt(notificationId), notification);
}
public static class CancelNotification extends BroadcastReceiver {
private int id;
@Override
public void onReceive(Context context, Intent intent) {
id = intent.getIntExtra("notification_id", 1);
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(id);
}
}
}
Я хочу, чтобы отменить уведомление, которое я нажал на кнопку действия «Закрыть».
Я знаю, что мне нужен идентификатор уведомления, чтобы отменить его, но так, как я сделал код, когда я нажимаю кнопку «Закрыть» и создаю класс CancelNotification, который расширяет BroadCastReceiver. Я получаю идентификатор уведомления последнее уведомление, и поэтому закрывает последнее уведомление, даже если я нажму на первое созданное мной уведомление.
Что я могу делать неправильно?
Вы пытались добавить Notification.FLAG_AUTO_CANCEL? Есть ли у этого флага поведение, которое вы ожидаете? – W0rmH0le
Я обновил вопрос со всем, что у меня есть в notification.builder. Прямо сейчас, когда я нажимаю кнопку «Закрыть», она просто ничего не делает. – Ravers
Когда вы нажимаете эти кнопки, намерение транслируется в систему. Может быть, вам нужно справиться с намерением. Попробуйте этот asnwer: http://stackoverflow.com/q/16869777/4860513 – W0rmH0le