2011年10月31日月曜日

[Android]デフォルトのホームランチャーに何が設定されているか知る方法

表題のとおり、Android端末にインストールされている特定のアプリを取得する方法です。デフォルトのホームランチャーだけでなく、デフォルトのブラウザだとか、デフォルトのメーラーだとか、そのあたりまで細かく特定することができます。

タイトルの内容を突き止めるのに、俺がいったいどれほどの時間を費やした事か!
そしてとてもあっさり簡単だった解決法にどれほど悔しがった事かorz
そんな愚か者は俺一人で良い。では解説行きましょう。

インストールされているアプリに関する様々な情報は、PackageManagerから取得することができます。この辺りは数多く解説されていますからここでまたやるような事はしません。面倒です。私は以下のサイトを参考にしました。
インストール済パッケージを取得する
インストール済みホームアプリケーションの一覧を作成する
さて、このようにPackageManagerにIntentをぶち込んでやることで、そのIntentに対応するアプリケーションがずらずらと取得できるわけです。でも、デフォルトで起動するアプリを設定していれば、起動するのは一つだけ。じゃあ、それは何だ?それを解決するのがPackageManager#resolveActivityです。わお、そのまんま。
使い方は簡単。
その他アイコンなどいくつもの情報がここから取り出せます。まあこの辺はデフォルト云々じゃなくてもqueryIntentActivitiesで取って来た情報と一緒ですね。あっちはArrayListで入ってくるけど。

ちなみに、まだ何もデフォルトに設定していない場合はクラス名(activityInfo.name)に"com.android.internal.app.ResolverActivity"が返ってきました。たぶん、あの見覚えあるアプリを選ぶダイアログの事。機種によって差があるかもしれないけれど、自分の手持ちの端末では全部これが返ってきました。

0 件のコメント:

コメントを投稿