ShortcutBadgerでホーム画面にバッジを表示 – Android

どちらかというとiOSのイメージが強いアイコンの上の赤い丸いあれ。

公式じゃないけど、最近は対応している端末も徐々に増えている模様なので、Notificationと共に、ユーザーのアプリ起動のきっかけに。

実装はすごく簡単で、Read meに対応端末含め、全部載ってます。
https://github.com/leolin310148/ShortcutBadger

build.gradle

android {
    (略)
    repositories {
        mavenCentral()
    }
}

dependencies {
    compile 'me.leolin:ShortcutBadger:1.1.10@aar'
}

ちょいちょいバージョンアップされていますが、処理を変える必要は滅多になく、最近はひたすら対応端末が増えている状況のようなので、適宜バージョンアップしていくのが良さそう。

バッジの表示

int badgeCount = 1; // 表示する数値
ShortcutBadger.applyCount(this, badgeCount);

screenshot_2016-10-11-09-39-59

ShortcutBadgeExceptionをcatch

int badgeCount = 1; // 表示する数値
try {
    ShortcutBadger.applyCountOrThrow(this, badgeCount);
} catch (ShortcutBadgeException e) {
    // おそらくNexusとか非対応の端末
}

try〜catchしなくても、特に落ちることはないですが、Nexusとか、未対応端末の場合に何か処理をしたいのであれば、try〜catchを入れて、必要な処理を追加したらいいと思います。

バッジを消す

ShortcutBadger.removeCount(this);

こっちもtry〜catch

try {
    ShortcutBadger.removeCountOrThrow(this);
} catch (ShortcutBadgeException e) {
    // おそらくNexusとか非対応の端末
}

バッジの表示の処理で0を入れてもバッジは消えてくれるので、removeは別に必要ないかも。

補足

自分が試した端末では「99」まで表示が最大で、それ以上は一律で「+99」表示でした。

screenshot_2016-10-11-09-40-47

他に情報を色々探しているとXperiaは別の手法でやってるとかあるけど、1.1.6で「add support for new Sony Launchers.」って書いてあるので、最近の端末であれば、ShortcutBadgerでも普通にいけるのかな?

ここでも最近のホームで使えるようになったとかどうとか。
http://did2memo.net/2016/08/27/naver-line-notification-badge-android/

最近のXperia端末が手元にないので把握できてないですが、また分かったら追記します。