スワイプしても消えないノーティフィケーション
タイマーや目覚まし時計のアプリでは、アラームがセットされていることを明確にするために、
通知バーになんらかのメッセージを表示することがあります。
これが「すべての通知を消去」等をしたときに、アラームの通知も消えてしまっては、目覚ましは本当に鳴るのか、不安になってしまいます。
このような場合に有効な、通知バー内から消えないノーティフィケーションを作成する方法です。
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification.Builder(this) .setContentTitle("title") // タイトルです(太字)。 .setContentText("text") // メッセージテキストです。 .setContentIntent(intent) // タップされた時に発行するインテントを指定します。 .setAutoCancel(false) // タップされた時に、通知バーから消去する場合はtrueにします。 .setSmallIcon(R.drawable.my_icon) // 左側のアイコン画像です。 .build(); notification.flags = Notification.FLAG_NO_CLEAR; nm.notify(NOTIFICATION_ID, notification); // IDは識別に使う整数なので、任意の数字です。
ノーティフィケーションを表示する通常の記述に加えて、Notification.FLAG_NO_CLEARのフラグを指定することで、
通知領域内でスワイプしても、ゴムでくっついているような動きを持ち、消すことができなくなります。
Notificationは、通知バーに表示する情報を保持します。
マネージャーを利用して通知バーに表示させます。
ノーティフィケーションはユーザーからは消すことができなくなっているので、
必要がなくなったときに消去する処理の記述が必要です。