ユーザーが起動できるインストール済みアプリケーションのリストを知る必要があります (例: ブラウザ、電子メール、マップなど)。メソッドに関するこの質問を読んだgetInstalledApplications
ので、次のコードを書きました。
final PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo app : apps) {
Intent launchIntent = pm.getLaunchIntentForPackage(app.packageName);
if (launchIntent != null) {
Log.d(LOG_TAG, "getApplicationLabel: " + pm.getApplicationLabel(app));
Log.d(LOG_TAG, "loadLabel: " + app.loadLabel(pm));
Log.d(LOG_TAG, "packageName: " + app.packageName);
Log.d(LOG_TAG, "name: " + app.name);
}
}
このようにして、起動できるアプリケーションのリストを取得します。これらのアプリケーションはそれぞれパッケージ名で特徴付けられるため、これらのいずれかを開始する場合は、パッケージ名を指定してパッケージの起動インテントを取得します。これは、各パッケージには起動できるアクティビティが最大であることを意味するため、各アプリケーション (getInstalledApplications
メソッドによって返される) には一意のパッケージ名が必要です。あれは正しいですか?