最終更新:
moonlight_aska 2011年07月30日(土) 09:09:50履歴
インテント(Intent)を利用することで, インストールされている通常のアプリケーションの一覧を取得することができる.


- AppList.java
- getPackageManagerメソッドで, PackageManagerのインスタンスを取得する.
- インテントのインスタンスを生成する. このとき, Intent.ACTION_MAINを指定する.
- Intent.CATEGORY_LAUNCHERを指定する.
- PackageManager#queryIntentActivitiesメソッドで, アプリ情報(ResolveInfo)を取得する.
- ResolveInfo#loadLabelメソッドで, アプリ情報からアプリ名を取得し, リストに追加する.
package com.moonlight_aska.android.applist;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class AppList extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> appList = new ArrayList<String>();
// アプリ情報を取得
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appInfo = packageManager.queryIntentActivities(intent, 0);
if(appInfo != null) {
for(ResolveInfo app : appInfo) {
// アプリ名をリストに追加
appList.add( (String)app.loadLabel(packageManager));
}
}
// リスト表示
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, appList);
setListAdapter(adapter);
}
}
このページへのコメント
i have a question if i want to add the Icon about the program how can i do ? THX
当方でも試してみましたが, 私の環境ではresolveInfo.loadLabel(getPackageManager())とresolveInfo.activityInfo.loadLabel(getPackageManager())で取得できるアプリ名は同じように見えます. 結果が異なる場合の具体例があれば教えてください.
私のアプリでは、アプリ名をresolveInfo.activityInfo.loadLabel(context.getPackageManager())で取得しています。少し結果が違います。