solo per mettere tutti insieme. Questo è come funziona
Per costruire una notifica,
Notification n = new Notification.Builder(MyService.this)
.setContentTitle("Notification Title")
.setContentText("Notification Message")
.setSmallIcon(R.drawable.myicon).build();
per fare un suono di notifica chiamata setSound()
di notifica,
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Notification n = new Notification.Builder(MyService.this)
.setContentTitle("Notification Title")
.setContentText("Notification Message")
.setSound(alarmSound)
.setSmallIcon(R.drawable.myicon).build();
Per annullare la notifica dopo che l'utente selezionato e lanciato l'Intento ricevente , chiama setAutoCancel()
,
Notification n = new Notification.Builder(MyService.this)
.setContentTitle("Notification Title")
.setContentText("Notification Message")
.setSound(alarmSound)
.setAutoCancel(true)
.setSmallIcon(R.drawable.myicon).build();
Per emettere un suono/vibrare una sola volta per una notifica specifica utilizzare Notification.FLAG_ONLY_ALERT_ONCE
. Con questo flag, la tua notifica verrà emessa solo una volta finché non verrà annullata e potrai chiamare notify() tutte le volte che vuoi con l'id di notifica. Notare che se si chiama cancel() o se l'utente annulla la notifica o è annullato automaticamente, la chiamata notify() farà nuovamente risuonare la notifica.
n.flags |= Notification.FLAG_ONLY_ALERT_ONCE; // Dont vibrate or make notification sound
Infine per mettere la notifica sul pannello di notifica,
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(notification_id, n);
Nota che notification_id
qui è importante se si desidera utilizzare la notifica in modo efficace. (Per mantenere singolo suono/vibrazioni per una notifica o al annullare una notifica specifica).
Per annullare un particolare di notifica,
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(notification_id);
È possibile cancel()
una notifica, anche se non esiste o è possibile chiamare notify()
tutte le volte che si desidera con lo stesso ID. Si noti che la chiamata di notifica con ID diverso creerà nuove notifiche.
Quindi, indipendentemente dal fatto che la notifica esiste o non, se si chiama notify()
di nuovo con il corretto notification_id
con il set Notification.FLAG_ONLY_ALERT_ONCE
bandiera, è possibile mantenere la notifica in vita senza disturbare l'utente con i suoni ripetuti.
scriverà nuovamente il testo Init per la notifica se si chiama nuovamente notificare – weakwire
@weakwire: solo se la notifica non era già visualizzata sullo schermo. – CommonsWare
non lo sapeva. Non risponde alla domanda ma serve allo scopo con 2 linee di codice. +1 – weakwire