これを達成するための標準的な方法はありません。Sony や Samsung などの多くのメーカーが、独自の Android カスタマイズに実装しています。
たとえば、Samsung では、BADGE_COUNT_UPDATE アクションでインテントをブロードキャストする必要がMainActivity
あります。メインのアクティビティ クラスをcount
アプリ アイコンに表示する番号にします。0 はバッジを非表示にすることに注意してください。
Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE");
intent.putExtra("badge_count", count);
intent.putExtra("badge_count_package_name", context.getPackageName());
intent.putExtra("badge_count_class_name", MainActivity.class.getName());
context.sendBroadcast(intent);
Sony デバイスは"com.sonyericsson.home.action.UPDATE_BADGE"
、カスタム エクストラでアクションを @Marcus Answered として使用"com.sonyericsson.home.permission.BROADCAST_BADGE"
するため、アプリ マニフェストにアクセス許可を追加し、次のことを行う必要があります。
Intent intent = new Intent("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", MainActivity.class.getName());
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", String.valueOf(count));
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", context.getPackageName());
context.sendBroadcast(intent);
注: 将来リファクタリングを行う場合に備えて、アプリのデータ ( context.getPackageName()
、MainActivity.class.getName()
) をハードコーディングするのではなく、クエリを実行することをお勧めします。