Android - продолжайте уведомлять уведомление в панели уведомлений
-
26-10-2019 - |
Вопрос
Я написал функцию для уведомления и отображения в панели уведомлений:
private void showNotification()
{
CharSequence title = "Hello";
CharSequence message = "Notification Demo";
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.icon, "A Notification", System.currentTimeMillis());
Intent notificationIntent = new Intent(this, Main_Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(Main_Activity.this, title, message, pendingIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
}
Он работает нормально, но what way we can keep the notification steady at Notification bar
Даже когда пользователь нажимает кнопку «Очистить» уведомление из панели уведомлений?
Пожалуйста, посмотрите на панель уведомлений «Yahoo».
Я прошел эту статью SDK: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#updating , но не смог узнать.
Решение
Использовать FLAG_NO_CLEAR
Просто установите его на свой Notification
экземпляр, прежде чем поставлять его NotificationManager
:
notificaton.flags |= Notification.FLAG_NO_CLEAR;
редактировать: Я только что заметил, что если вы используете Notification.Builder
(С тех пор, как сот) и сделать уведомление «продолжающееся», оно также станет невосприимчивым к «очистить все». Видеть здесь.
Похоже, это должно отговорить разработчиков от использования FLAG_NO_CLEAR
на непонигающем уведомлении, так как это может сбить с толку пользователя.
Другие советы
Пытаться Setongoing (True).
notification = new Notification.Builder(getApplicationContext())
.setLargeIcon(
BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setSmallIcon(R.drawable.ic_launcher).setTicker(tickerText)
.setWhen(System.currentTimeMillis()).setContentTitle(contentTitle)
.setOngoing(true)
.setContentText(contentText)
.setContentIntent(contentIntent)