2011年2月24日木曜日

他のアプリのpackage名/class名の調べ方

特定のアプリを起動させたい時など、そのアプリのpackage名やclass名が必要になる時がある。

PackageManagerクラスを使用して取得はできたのだが、初心者的にはコードをちゃんと理解するのが難しいとか、class名取得のアプリを使い勝手がいいようにつくり込むのがめんどくさいなぁとか思っていたところ、使い勝手のいいアプリがマーケットにあった。



GetIntentClassName https://market.android.com/details?id=com.momoonga.getintentclassname

インストールされているアプリのpackage名,class名の一覧を書きだしてくれる。
Intent.ACTION_SENDで出力するというアイデアがさりげないけれど素敵です。たしかに、色々絞り込もうとするより、全てPCに持ってきてしまうというのが正解なんだろうなぁ。


ちなみに自分でコードを書く場合に参考になったのはこちら。
arayan's: Android Tips アプリケーション一覧の取得 http://pub.ne.jp/arayan/?entry_id=2794633
アプリケーションリストを取得する - コードを貼り付けながら。 http://d.hatena.ne.jp/unagi_brandnew/20100502/1272837658

成功したコード

public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);    
 Intent intent=new Intent(Intent.ACTION_MAIN,null);
 intent.addCategory(Intent.CATEGORY_LAUNCHER);
 PackageManager manager=getPackageManager();
 List<ResolveInfo> infes=manager.queryIntentActivities(intent,0);
 TextView textView = (TextView) findViewById(R.id.textview);
 for (int i = 0;i < infes.size(); i++) {
  ResolveInfo info=infes.get(i);
  textView.append(info.activityInfo.name + "\n");
 }
}

ただしこれだと、TextViewをスクロールできるようにつくっておかないと、最後まで表示されないとか、これって目的の物をどうやって探すのとか、結局プログラムコードには手入力するの?、とか。頻繁に使用するにはちょっとキツイ。

0 件のコメント:

コメントを投稿