按应用名称获取其他应用的包名称

时间:2017-01-29 05:52:01

标签: java android package-name

我想知道应用的包名,我只知道该应用的应用名称。假设我想知道电子​​邮件应用程序的包名称只是它的名称然后如何得到它 我只知道应用程序名称。

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));
}

这是获取所有应用程序包名称的代码,但我需要知道特定的应用程序。

2 个答案:

答案 0 :(得分:2)

应该是这样的,因为应用名称不是唯一的,您可以拥有与您请求的应用名称匹配的多个包名称。

请记住,我的函数将仅返回匹配的第一个包名称(您可以非常轻松地更改此逻辑):

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方法检查是否有结果。

答案 1 :(得分:0)

以下是有助于获取所有已安装应用的包名称的代码

final PackageManager pkgmanager = getPackageManager();
String TAG = "Application Info";

//Return a list of installed apps.
List<ApplicationInfo> packages =  pkgmanager.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo pkgInfo : packages) {
    Log.d(TAG, "Installed package :" + pkgInfo .packageName);
    Log.d(TAG, "Source dir : " + pkgInfo .sourceDir); 
}

希望这会有所帮助

Summved