0

アプリのパッケージ名を知りたいのですが、そのアプリのアプリ名しか知りません。メールアプリのパッケージ名をその名前だけで知りたいとしたら、それを取得する方法
はアプリ名だけです。

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
     Log.d(TAG, "Installed package :" + packageInfo.packageName);
     Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
}

これはすべてのアプリのパッケージ名を取得するコードですが、特定のアプリについて知る必要があります。

4

2 に答える 2

3

アプリ名は一意ではないため、要求されたアプリ名と一致する複数のパッケージ名を持つことができます。

私の関数は、一致する最初のパッケージ名のみを返すことに注意してください (このロジックは非常に簡単に変更できます)。

public String getPackNameByAppName(String name) {
    PackageManager pm = context.getPackageManager();
    List<ApplicationInfo> l = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    String packName = "";
    for (ApplicationInfo ai : l) {
        String n = (String)pm.getApplicationLabel(ai);
        if (n.contains(name) || name.contains(n)){
            packName = ai.packageName;
        }
    }
    
    return packName;    
}

メソッドを使用TextUtils.isEmptyして、結果が得られたかどうかを確認します。

于 2017-01-29T14:53:26.690 に答える