57

Android アプリにバッジを追加できるかどうかを尋ねる Q がいくつかあることは知っていますが、すべて NO という回答で終わります...

しかし、どういうわけか、Android 用の最新の Facebook ベータ版は、技術的に正確でなくても、少なくともバッジのように見えることをしているようです。

その投稿では、コメント投稿者の 1 人が、何らかの形で TouchWiz に関連していると述べています。また、ここでも「S3 TouchWiz Jelly Bean Addon」の機能として言及されています。

これを行う方法と、自分のアプリで使用できる API があるかどうかについての情報をいただければ幸いです (適切な環境で実行している場合、つまり、FB がこの動作を示すのと同じデバイス)。

4

5 に答える 5

31

こんにちは、このライブラリを簡単に使用できます。

サポート : ソニー、サムスン、LG、HTC、Xiaomi、ASUS、ADW、APEX、NOVA、Huawei、ZUK、OPPO

ショートカットアナグマ

ここに画像の説明を入力

追加 :

int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);  

削除する :

ShortcutBadger.applyCount(context, 0);
于 2016-12-03T12:36:07.120 に答える
23

これがソニーのデバイスでどのように行われるかを理解しました。

私はそれについてここにブログを書きました。また、これについて別の SO の質問をここに投稿しました。


Sony デバイスは という名前のクラスを使用しますBadgeReciever

  1. マニフェスト ファイルでアクセス許可を宣言しcom.sonyericsson.home.permission.BROADCAST_BADGEます。

  2. にブロードキャスト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);
    
  3. 終わり。これIntentがブロードキャストされると、ランチャーはアプリケーション アイコンにバッジを表示するはずです。

  4. バッジを再度削除するには、新しいブロードキャストを送信します。今回はSHOW_MESSAGEfalse に設定します。

    intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false);
    

答えを短くするために、これをどのように見つけたかについての詳細は除外しましたが、すべてブログで入手できます. 誰かにとって興味深い読み物になるかもしれません。

于 2013-11-26T14:29:16.050 に答える
12

これを達成するための標準的な方法はありません。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()) をハードコーディングするのではなく、クエリを実行することをお勧めします。

于 2016-03-01T18:35:28.713 に答える
10

しかし、どういうわけか、Android 用の最新の Facebook ベータ版はまさにそれを行います...

リンク先のスクリーンショットを含むフォーラム スレッドによると、そうではありません。vakama94 の引用:

まあ、それは実際にはTouchWizであり、アプリだけではありません. 私はJellyBean 4.1.2を実行しているGalaxy S IIを持っていますが、他のアプリケーションでも同じことができます

サムスンが、バッジとして使用する数字をアプリが発行できるようにするパブリック API を持っているかどうかはわかりません。これは、彼らがいくつかの企業と個人的に行ったことである可能性があります。

Nexus シリーズ デバイスの 1 つなど、ストック Android ホーム画面にこれらのバッジが表示されていることを示す証拠を提出してください。

于 2013-07-07T11:44:20.290 に答える