Ho una notifica personalizzato con un pulsante di azione:Congeda la notifica corrente sulla lotta cliccato
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);
}
}
}
voglio annullare notifica che ho cliccato sul pulsante "Chiudi".
So che ho bisogno dell'id della notifica per cancellarlo, ma il modo in cui ho fatto il codice, quando clicco sul pulsante "Chiudi" e creo la classe CancelNotification che estende BroadCastReceiver sto ricevendo l'ID di notifica l'ultima notifica, e così, sta chiudendo l'ultima notifica anche se clicco sulla prima notifica che ho creato.
Cosa potrei fare di sbagliato?
Hai provato ad aggiungere Notification.FLAG_AUTO_CANCEL? Questa bandiera ha il comportamento che ti aspetti? – W0rmH0le
Ho aggiornato la domanda con tutto ciò che ho in notification.builder. Proprio ora quando clicco sul pulsante "Chiudi", non fa proprio nulla. – Ravers
Quando si fa clic su questi pulsanti, l'intento viene trasmesso al sistema. Forse, è necessario gestire l'intento. Prova questo asnwer: http://stackoverflow.com/q/16869777/4860513 – W0rmH0le