Android-根据包名判断软件是否安装

若要适配Android11,在清单文件中添加如下权限,不不需要动态申请

1
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

获取软件包名列表

获取所有软件的包名的列表,然后循环判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 从所有以安装软件的包名的列表中判断是否安装
* @param context 上下文
* @param appPackName 检测的包名
* @return true:已安装 false:未安装
*/
public static boolean appList(Context context, String appPackName){
PackageManager packageManager = context.getPackageManager();
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
for (int i = 0; i < installedPackages.size(); i++) {
if (appPackName.equals(installedPackages.get(i).packageName)){
return true;
}
}
return false;
}

根据包名信息判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 检测是否安装了某软件
* @param context 上下文
* @param appPackName 被检测的软件的包名
* @return true:已安装 false:未安装
*/
@SuppressLint("QueryPermissionsNeeded")
public static boolean checkAppInstalled(Context context, String appPackName){
PackageInfo packageInfo = null;
try {
packageInfo = context.getPackageManager().getPackageInfo(appPackName,0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return packageInfo != null;
}