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(); // //未安装 }