2

ユーザーが起動できるインストール済みアプリケーションのリストを知る必要があります (例: ブラウザ、電子メール、マップなど)。メソッドに関するこの質問を読んだ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メソッドによって返される) には一意のパッケージ名が必要です。あれは正しいですか?

4

1 に答える 1

2

通常、Android では、同じパッケージ名を使用して複数のアプリケーションをインストールすることはできません。私の経験では、2 番目のアプリの .apk ファイルはインストールできず、実行もできません。つまり、パッケージ名ごとに複数のアプリケーションを取得することはありません。

ただし、同じアプリケーションからインテントを介して複数のアクティビティを起動することは可能です。getLaunchIntentForPackage() は 1 つのインテントのみを返すため、コードはそれらを取得しませんが、各アクティビティには独自のインテント フィルターを設定できます。http://developer.android.com/guide/topics/intents/intents-filters.htmlの「メモ帳の例」には 3 つの異なるアクティビティがあり、それぞれ外部から起動できます。

于 2012-04-25T16:34:24.923 に答える