Android - постоянное уведомление на панели уведомлений

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

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, но не смог найти.

2 ответа

Решение

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

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

notificaton.flags |= Notification.FLAG_NO_CLEAR;

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

По-видимому, это должно отговорить разработчиков от использования 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)
Другие вопросы по тегам