<< Android-Note

アプリの一覧を取得する

端末にインストールされているアプリの一覧を取得したいときはPackageManagerというクラスを使います。

例えばアプリ名とそのパッケージ名を全てのアプリで調べたい場合は次のようなコードを書きます。

public class MainActivity extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PackageManager pm = getActivity().getPackageManager();
        List<ApplicationInfo> appInfoList 
            = pm.getInstalledApplications(PackageManager.GET_META_DATA);
        for(ApplicationInfo appInfo : appInfoList){
            Log.i("MainActivity", "ラベル = " + pm.getApplicationLabel(appInfo));
            Log.i("MainActivity", "パッケージ名 = " + appInfo.packageName);
        }
    }
}

getInstallApplicationsメソッドを使うことですでにインストール済みのアプリ情報をApplicationInfo型のリストで取り出すことができます。

このアプリを実行したときのログの一部は次のようになりました。

02-03 05:16:12.121: ラベル = Sound Recorder
02-03 05:16:12.121: パッケージ名 = com.android.soundrecorder
02-03 05:16:12.121: ラベル = Launcher
02-03 05:16:12.121: パッケージ名 = com.android.launcher
02-03 05:16:12.121: ラベル = Search
02-03 05:16:12.121: パッケージ名 = com.android.quicksearchbox

ここでのラベルとはアプリの名前のことです。

アプリの種類を識別する

例えばプリインストールされたアプリとそうでないアプリを分けたい場合はApplicationInfoflagsを調べます。

例えばプリインストール済みかどうかを判別するコードは次のようになります。

    List appInfoList = pk.getInstalledApplications(PackageManager.GET_META_DATA);
    for(ApplicationInfo appInfo : appInfoList){
        String packageName = appInfo.packageName;
        Log.i("MainActivity", "パッケージ名 = " + packageName);
        
        //プリインストールされたアプリか判別する。
        if((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM){
            Log.i("MainActivity", 
                    "これはプリインストール済みのアプリです。");
        }
    }

プリインストールを表すフラグFLAG_SYSTEMがflagsの中に含まれているかどうかを判別しています。判別に使える主なフラグには次のものがあります。

フラグ意味
FLAG_DEBUGGABLEデバッグを許可しているアプリ
FLAG_SYSTEMシステムにプリインストールされたアプリ
FLAG_RESIZEABLE_FOR_SCREENS画面の大きさに合わせて大きさが変わるアプリ(APIレベル4以上)
FLAG_SUPPORTS_SCREEN_DENSITIES異なる画面密度に対応しているアプリ(APIレベル4以上)
FLAG_UPDATED_SYSTEM_APPプリインストールされているアプリの中でアップデートされたアプリ(APIレベル4以上)

そのほかのフラグについてはApplicationFlagの定数を参照してください。

関連項目
プライバシーポリシー