Android - постоянное уведомление на панели уведомлений - PullRequest
10 голосов
/ 17 марта 2011

Я написал функцию уведомления и отображения на панели уведомлений:

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".

enter image description here

Я просмотрел эту статью в SDK: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Updating, но не смог найти.

Ответы [ 2 ]

25 голосов
/ 17 марта 2011

Использование FLAG_NO_CLEAR

Просто установите его на свой экземпляр Notification, прежде чем передавать его на NotificationManager:

notificaton.flags |= Notification.FLAG_NO_CLEAR;

edit: Я только что заметил, что если вы используете Notification.Builder (начиная с Honeycomb) и делаете уведомление "текущим", оно также станет неуязвимым для "очистки всех". Смотри здесь .

Очевидно, это должно отговорить разработчиков от использования FLAG_NO_CLEAR для непостоянного уведомления, поскольку это может сбить пользователя с толку.

13 голосов
/ 11 августа 2013

Попробуйте 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)
...