方法一

使用抛出异常的方式判断,通过包名获取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 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;}

注意

以上的两种方法都可以判断手机中是否安装了某个应用,但还是通过测试发现使用方法一的时候反应速度会比较慢,因为抛出异常需要一定的时间,所以在判断手机中是否安装了某个应用,建议使用方法二。但是当手机中应用过多时,方法二的速度也会相应的变慢,但是在测试过程中整体的速度相对于方法一还是快一些。

更多相关文章

  1. 自己关于Android上下文对象的理解
  2. [android]startActivityForResult方法简介
  3. Android(安卓)序列化 Parcelable VS Serializable
  4. 【Android】之【对话框(Dialog)大全】
  5. Android获取可执行应用的列表并执行相关应用
  6. Android(安卓)Service的绑定过程
  7. Android杀死正在运行的进程
  8. Android(安卓)Values文件作用及使用方法
  9. Android应用程序获取system权限

随机推荐

  1. js判断用户设备的类型(iOS,Android,pc等)
  2. Android(安卓)GPS 临近触发
  3. Android 蓝牙设备的开启与关闭功能的实现
  4. android 源码环境下,编译apk时,导入第三方
  5. Bugs with P3100 4.1.2
  6. Music打开出错
  7. android打开,保存图片到sd卡,显示图片
  8. android String资源 包含 数学符号等特殊
  9. Android 自定义Combobox
  10. Android学习教程之日历控件使用(7)