批量判断app是否安装 packageInfo 报错问题 getInstalledPackages、DeadSystemException

最开始是使用:

public static boolean isAppInstall(Context context, String packageName) {

    final PackageManager packageManager = context.getPackageManager();

    List 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;

}

就算是循环遍历判断,各种隐藏显示界面马上调用 也不会出现异常,特此记录。

你可能感兴趣的:(批量判断app是否安装 packageInfo 报错问题 getInstalledPackages、DeadSystemException)