Aggiungo due pulsanti di azione alla mia notifica, quando faccio clic su uno di essi eseguono l'azione desiderata, tuttavia la notifica rimane nel mio cassetto delle notifiche. So che è possibile rimuovere la notifica dal cassetto delle notifiche quando si fa clic su un pulsante di azione, in questo modo funziona Gmail. Se clicco sulla notifica principale, apre l'app e rimuove la notifica dal cassetto delle notifiche.Rimuovere la notifica quando si chiama addAction?
Ecco un frammento del mio codice:
Intent completeIntent = new Intent(getApplicationContext(), MarkComplete.class);
completeIntent.putExtra("rowid", inrowid);
completeIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
PendingIntent markCompleteIntent = PendingIntent.getActivity(getApplicationContext(), inrow, completeIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Title")
.setContentText("text")
.setContentIntent(notificationReleaseIntent)
.setPriority(Notification.PRIORITY_HIGH)
.setAutoCancel(true)
.addAction(R.drawable.complete, "Mark Complete", markCompleteIntent);
Edit - Come zionpi rilevare avevo bisogno di chiamare notification.cancel(); rimuovere la notifica dopo aver fatto clic sul pulsante addAction. Ho semplicemente aggiunto questo metodo alle mie classi in cui PendingIntent stava puntando.
public static void CancelNotification(Context ctx, int notifyId) {
String s = Context.NOTIFICATION_SERVICE;
NotificationManager mNM = (NotificationManager) ctx.getSystemService(s);
mNM.cancel(notifyId);
}
Il codice è incompleto. La notifica rimane ancora lì? – Nizam
IMO Gmail utilizza il servizio per conservare il riferimento all'oggetto di notifica e, pertanto, può rimuovere la notifica quando soddisfa determinate condizioni. –