Tips‎ > ‎Tips‎ > ‎

インストール済みアプリリストを取得する

他のアプリとの連携、、、というテーマを考えていますが
まずは、他のアプリは何がインストールされているのかを取得するためのサンプルを作成しました。

取得したのは、ホームアプリのアプリトレイに表示されるアプリの一覧です。
検索条件を変更することでいろいろと取得することができます。

今回作ったサンプルは下記に配置しました。

SVN でダウンロードする場合は
http://gaematsu.googlecode.com/svn/trunk/AppList


アプリのリストを取得

     // ListView に設定する ArrayAdapter を作成
        ArrayAdapter<String> adapter = 
         new ArrayAdapter<String>(
         this, android.R.layout.simple_list_item_1);
        
        // アプリ一覧を取得する
        PackageManager pm = getPackageManager();
        // 検索条件
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        // 検索
        List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
        
        // ArrayAdapter にアプリ名を追加
        for (ResolveInfo info : list) {
adapter.add(info.activityInfo.loadLabel(pm).toString());
}

        // ListView に ArrayAdapter を設定
        mAppListView.setAdapter(adapter);

ListView でクリックされたアプリを起動する

ResolveInfo info = mAppList.get(position);
String pkg = info.activityInfo.packageName;
String ac = info.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClassName(pkg, ac);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

パッケージ名とAcrivity のクラス名を取得
Intent を作成するときに action と category 、パッケージ名とクラス名を設定
フラグとして Intent.FLAG_ACTIVITY_NEW_TASK を追加(別アプリなので必ず追加しときます)


Comments