方法一
使用抛出异常的方式判断,通过包名获取app的信息,当app不存在时,会抛出NameNotFoundException
异常,我们通过对异常的捕获,从而判断是否安装了该应用,代码如下:
private boolean checkAppInstalled(Context context,String pkgName) {
if (pkgName== null || pkgName.isEmpty()) {
return false
}
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(pkgName, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if(packageInfo == null) {
return false;
} else {
return true;
}
}
方法二
获取已经安装应用的所有包名,然后通过对比包名,从而判断应用是否安装,代码如下:
private boolean checkAppInstalled( Context context, String pkgName) {
if (pkgName== null || pkgName.isEmpty()) {
return false
}
final PackageManager packageManager = context.getPackageManager();
// 获取所有已安装程序的包信息
List<PackageInfo> info = packageManager.getInstalledPackages(0);
if(info == null || info.isEmpty())
return false;
for ( int i = 0; i < info.size(); i++ ) {
if(pkgName.equals(info.get(i).packageName)) {
return true;
}
}
return false;
}
注意
以上的两种方法都可以判断手机中是否安装了某个应用,但还是通过测试发现使用方法一的时候反应速度会比较慢,因为抛出异常需要一定的时间,所以在判断手机中是否安装了某个应用,建议使用方法二。但是当手机中应用过多时,方法二的速度也会相应的变慢,但是在测试过程中整体的速度相对于方法一还是快一些。