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

最开始是使用:

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;

}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,719评论 0 17
  • APK安装流程系列文章整体内容如下: APK安装流程详解0——前言APK安装流程详解1——有关"安装ing"的实体...
    隔壁老李头阅读 12,653评论 3 10
  • Android音频系统详解 参考好文: Android 音频系统:从 AudioTrack 到 AudioFlin...
    爱雨520阅读 13,860评论 2 7
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,448评论 0 6
  • 连续几天盛情的款待,在课程的最后一天校长表现出了汪伦般的智慧。在对教授极大的崇拜及留恋的情感中,让教授从下午一直写...
    左佑行之阅读 179评论 0 0