Google原生系统中获取已安装apk列表较为简单
直接使用
List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();//获取app名
packageInfo.packageName;//获取packgeName
packageInfo.versionName;//获取版本名
packageInfo.versionCode;//获取版本号
所以直接使用你的
if("你需检查的apk包名".equals( packageInfo.packageName)){
存在
}
BUT
由于部分手机系统为定制的,他们将读取已安装列表设为需手动设置的权限、例如在17年时,华为将该权限设置为默认不给,导致很多app崩溃。但现在已开放,默认提供,但这势必是一个趋势。
尽管获取列表权限被限制,但不妨碍直接根据包名判断是否安装只当apk
PackageInfo packageInfo ;
try {
packageInfo = context.getPackageManager().getPackageInfo("包名", 0);
if (packageInfo == null) {
//当packageInfo为空,则没安装
return false;
} else {
//已安装
return true;
}
} catch (PackageManager.NameNotFoundException e) {//部分系统在没有安装的情况下会返回异常
packageInfo = null;
e.printStackTrace();
// //未安装
}