Несъемное уведомление

В моем приложении работает служба на фоновом режиме. Я хочу уведомить пользователя о том, что служба запущена. Но мне нужно, чтобы пользователь не мог удалить уведомление - нажав кнопку "Очистить" или прокрутив его, в панели уведомлений

enter image description here

Это означает, что мне нужно показать мое уведомление выше области уведомлений

Ответы

Ответ 1

Это возможно, но способ его реализации зависит от уровня API, для которого вы разрабатываете.

Для уровней API ниже 11 вы можете установить Notification.FLAG_NO_CLEAR. Это можно реализовать следующим образом:

// Create notification
Notification note = new Notification(R.drawable.your_icon, "Example notification", System.currentTimeMillis());

// Set notification message
note.setLatestEventInfo(context, "Some text", "Some more text", clickIntent);

// THIS LINE IS THE IMPORTANT ONE            
// This notification will not be cleared by swiping or by pressing "Clear all"
note.flags |= Notification.FLAG_NO_CLEAR;

Для уровней API выше 11 или при использовании Android Support Library можно реализовать это следующим образом:

Notification noti = new Notification.Builder(mContext)
    .setContentTitle("Notification title")
    .setContentText("Notification content")
    .setSmallIcon(R.drawable.yourIcon)
    .setLargeIcon(R.drawable.yourBigIcon)
    .setOngoing(true) // Again, THIS is the important line
    .build();

Ответ 2

Для создания несвязанного уведомления просто используйте setOngoing (true);

NotificationCompat.Builder mBuilder =
                         new NotificationCompat.Builder(this)

                        .setSmallIcon(R.drawable.ic_service_launcher)

                        .setContentTitle("My title")

                        .setOngoing(true)  

                        .setContentText("Small text with details");