web-dev-qa-db-ja.com

取り外し不可能な通知

私のアプリでは、バックグラウンドで実行されているサービスがあります。サービスが実行されていることをユーザーに通知したい。ただし、通知バーで、クリアボタンを押すか、スワイプして通知を削除できないようにする必要があります。

enter image description here

これは、通知領域の上に通知を表示する必要があることを意味します

20
Kelib

これは可能ですが、実装方法は、開発するAPIレベルによって異なります。

11未満のAPIレベルの場合、 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;

11を超えるAPIレベルの場合、または Androidサポートライブラリ を使用する場合は、次のように実装できます。

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();
59
Ole

取り外し不可能な通知を作成するには、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");
11
cheetah

Notification.FLAG_NO_CLEAR または Notification.FLAG_ONGOING_EVENT のように聞こえます。

3
antew

取り外し不可能な通知を作成するには、setOngoing(true)を使用するだけです。

取り外し可能な通知を作成するには、setOngoing(false)を使用します。

1
Adam