Android获取手机应用信息

时间:2021-04-23 19:05:53

通过应用名获取包名

/**
* 通过应用名获取包名
*
* @param name 应用名
* @return 包名
*/

public static String getPackageNameByAppName(Context context, @NonNull String name) {
try {
if (TextUtils.isEmpty(name)) {
return null;
}
// 获取到包的管理者
PackageManager packageManager = context.getPackageManager();
// 获取所有的安装程序
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
// 遍历获取到每个应用程序的信息
for (PackageInfo packageInfo : installedPackages) {
// 获取程序名
String appName = packageInfo.applicationInfo.loadLabel(packageManager).toString();
if (name.equals(appName)) {
return packageInfo.packageName;
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

获取手机中的所有应用的信息

/**
* 获取手机中的所有应用的信息
* @param context context
*/

public void getInstalledApplications(Context context) {
// 获取到包的管理者
PackageManager packageManager = context.getPackageManager();
// 获取所有的安装程序
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
// 遍历获取到每个应用程序的信息
for (PackageInfo packageInfo : installedPackages) {
// 获取到程序的包名
String packageName = packageInfo.packageName;
// 获取到版本号
String versionName = packageInfo.versionName;

ApplicationInfo applicationInfo = packageInfo.applicationInfo;
// 获取程序名
String appName = applicationInfo.loadLabel(packageManager).toString();
// 获取到程序图标
Drawable icon = applicationInfo.loadIcon(packageManager);

// 获取程序的所有标签 用来获取 以下信息
int flags = applicationInfo.flags;
// 判断是不是用户程序
if ((flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM) {
// 系统程序
} else {
// 用户程序
}
// 判断是不是安装在哪
if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == ApplicationInfo.FLAG_EXTERNAL_STORAGE) {
// 内存卡
} else {
// 手机内存
}
}
}

启动App

/**
* 启动app
*
* @param context context
* @param appPackageName 应用包名
*/

public static void startAPP(Context context, String appPackageName) {
try {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(appPackageName);
context.startActivity(intent);
} catch (Exception e) {
ToastUtil.showDebugToast(context, "没有安装");
}
}