批量判断app是否安装 packageInfo 报错问题 ge
最开始是使用:
public static boolean isAppInstall(Context context, String packageName) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
if (packageName.equals(pinfo.get(i).packageName)) {
return true;
}
}
}
return false;
}
使用这种方法来判断多个一个列表app是否有安装过,应用会几率出现DeadSystemException问题,刚开始以为是效率问题,在这段代码机型各种优化,
不管怎么使用最后还是会偶尔出现报错和crash错误。
后来使用如下代码判断:
try {
packageManager.getApplicationInfo(walletData.getWalletPackage(),
PackageManager.GET_UNINSTALLED_PACKAGES);
return true;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return false;
}
就算是循环遍历判断,各种隐藏显示界面马上调用 也不会出现异常,特此记录。