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

希望这会有所帮助

总结

于 2017-05-02T09:49:04.607 回答