iPhone では、番号付きバッジをアプリケーション アイコンに追加できます。BlackBerry では、プログラムの実行中にアプリケーションのアイコンに画像を描画することに成功しました。Androidでもこれをやりたいです。通知バーはすぐに通知する必要がないため、使用したくありません。代わりに、ユーザーがアプリケーション アイコンを見るだけで、アプリケーションに含まれる新しいメッセージの数を確認できるようにしたいだけです。
6 に答える
残念ながら、Android では、プログラムがコンパイルされると APK に封印されているため、アプリケーション アイコンの変更は許可されていません。プログラムで「drawable」に変更する方法はありません。
アイコンの代わりにウィジェットを使用することで、目的を達成できます。ウィジェットは高度にカスタマイズ可能で、必要なことを行うことができます。
ここでは、iPhone アイコン通知とウィジェットの使用の違いについて簡単に説明します。
http://www.cnet.com/8301-19736_1-10278814-251.html
お気づきのように、ウィジェットとアイコンの使用に実質的な違いはありません。これらは同じサイズで同じように見えるからです。
これは、Sony の Xperia Home でも実行できます。ここでブログを書きましたが、重要な部分は以下のとおりです。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);
答えを短くするために、これをどのように見つけたかについての詳細は除外しましたが、すべてブログで入手できます. 誰かにとって興味深い読み物になるかもしれません。
また、これについて別のSOの質問をここに投稿しました。許可されたら、そこに完全な回答を追加します(8時間以内に自分の質問に回答するには、10の評判が必要です)。