Androidアプリにバッジを追加することが可能かどうかを尋ねるQがいくつかあり、それらはすべて答えがありません...
しかし、どういうわけかAndroid 少なくともバッジのように見える何かをするように見える の最新のFacebookベータ版)==それは技術的に正確ではない場合でも。
その投稿で、コメンターの一人は、それが何らかの形でTouchWizに関連していると述べています。 ここでも 「S3 TouchWiz Jelly beanアドオン」の機能として言及します。
私はまだこれをどのように行うことができ、自分のアプリで使用できるAPIがある場合(適切な環境で実行する場合、つまりFBがこの動作を示す同じデバイス)に情報をいただければ幸いです?
こんにちは、このlibを簡単に使用できます。
サポート:ソニー、サムスン、LG、HTC、Xiaomi、ASUS、ADW、APEX、NOVA、Huawei、ZUK、OPPO
追加 :
int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);
削除する :
ShortcutBadger.applyCount(context, 0);
これがSonyデバイスでどのように行われるかを理解しました。
私はそれについてブログに書いた here 。また、別のSOこれについての質問 here 。
Sonyデバイスは、BadgeReciever
という名前のクラスを使用します。
マニフェストファイルでcom.sonyericsson.home.permission.BROADCAST_BADGE
権限を宣言します。
Intent
をBadgeReceiver
にブロードキャストします。
Intent intent = new Intent();
intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", "com.yourdomain.yourapp.MainActivity");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", "99");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", "com.yourdomain.yourapp");
sendBroadcast(intent);
できたこのIntent
がブロードキャストされると、ランチャーはアプリケーションアイコンにバッジを表示します。
バッジを再度削除するには、SHOW_MESSAGE
をfalseに設定して新しいブロードキャストを送信するだけです:
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false);
答えを短くするためにこれを見つけた方法の詳細を除外しましたが、それはすべてブログで入手できます。誰かにとって興味深い読み物かもしれません。
これを達成する標準的な方法はありません。 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デバイスは@Marcus Answeredとして_"com.sonyericsson.home.action.UPDATE_BADGE"
_アクションとカスタムエクストラを使用するため、アプリマニフェストに_"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()
)をクエリすることが望ましいです。
しかし、どういうわけかAndroidの最新のFacebookベータ版はまさにそれを行います...
リンク先のスクリーンショットを含むフォーラムスレッド ではありません。 vakama94の引用:
まあ、それはアプリだけでなく、実際にはTouchWizです。私はJellyBean 4.1.2を実行しているGalaxy S IIを持っていますが、それは同じことをしますが、他のいくつかのアプリケーションで
サムスンが、バッジとして使用する番号をアプリで公開できるパブリックAPIを持っているかどうかはわかりません。これは、彼らが少数の企業と個人的に行ったことです。
Nexusシリーズのデバイスなど、ストックAndroidホーム画面にこれらのバッジが表示されている証拠を提供してください。