酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Androidで通知(Notification)が表示されないので調べてみたらSmallIconを設定するのを忘れていた

少しハマった。Androidで通知(Notification)が表示されないので調べてみたらどうもSmallIconを設定しておかないといけないみたい。

仮のものでも使ったら良かったんだろうけど、適当なアイコンがなかったので何も設定していなかったら通知が表示されませんでした。メモ代わりにハマりどころを残しておきます。

通知を表示する

以下のコードはよく使う通知のコードです、当然表示されます。

Notification notification = new NotificationCompat.Builder(getApplicationContext())
    .setSmallIcon(R.drawable.icon_small)
    .setContentTitle("タイトル")
    .setContentText("テキスト")
    .setSubText("サブテキスト")
    .build();

NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext());
manager.notify(123, notification);

下図のように表示されます。

f:id:ch3cooh393:20150813000726p:plain

通知が表示されないケース

SmallIconを設定しなかった場合のコードは以下の通りです。setSmallIconメソッドの部分だけをコメントアウトしてみましょう。その他の諸々の情報を設定していてもSmallIconが指定されていないと通知は無視されます*1

Notification notification = new NotificationCompat.Builder(getApplicationContext())
// .setSmallIcon(R.drawable.icon_small)
    .setContentTitle("タイトル")
    .setContentText("テキスト")
    .setSubText("サブテキスト")
    .build();

NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext());
manager.notify(123, notification);

実行しても何も起こりません、無視されます!これは知らなかった。

通知を表示させるための最小構成

とりあえずSmallIconさえ設定しておけば、(表示のされかたはともかく)通知はきちんと表示される。

Notification notification = new NotificationCompat.Builder(getApplicationContext())
    .setSmallIcon(R.drawable.icon_small)
    .build();

NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext());
manager.notify(123, notification);

下図のように表示されます。

f:id:ch3cooh393:20150813001312p:plain

こちらからは以上です。

*1:できれば例外出して欲しかったな……