我想知道应用的包名,我只知道该应用的应用名称。假设我想知道电子邮件应用程序的包名称只是它的名称然后如何得到它 我只知道应用程序名称。
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));
}
这是获取所有应用程序包名称的代码,但我需要知道特定的应用程序。
答案 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