Android判断某个应用是否安装

————字数统计 347 字 | 阅读时长 1 分钟————

序言

在应用开过过程中有这样一个场景:判断某个应用是否已经安装了。你一定会说这个有什么难的,是的,这个问题很简单,不为别的,就为记个笔记,大牛勿喷

代码篇

包名检查

public static boolean isInstalled(Context context, String packageName) {
        try {
            PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName.trim()
                    , PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
            if (packageInfo != null) {
                // 说明某个应用使用了该包名
                return true;
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return false;
        }

        return false;
}

ACTION检查

  • 方案一
 public static boolean isInstalledByAction(Context context, String action) {
        final PackageManager packageManager = context.getPackageManager();
        final Intent intent = new Intent(action);
        List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        if(list.size() > 0){
            // 说明某个应用的activty使用了该action
            return true;
        }
        return false;
    }
  • 方案二
  public static boolean isInstallByAction(Context context, String action) {
          PackageManager packageManager = context.getPackageManager();
          Intent intent = new Intent(action);
          List<ResolveInfo> resolveInfo = packageManager
                  .queryIntentActivities(intent, PackageManager.GET_INTENT_FILTERS);// AS这里报错,但是不影响编译
          if (resolveInfo.size() == 0) {
              // 说明没有任何应用使用该action
              return false;
          }

          // 说明有某个的某个应用的activity使用了该action
          return true;
   }

总结

这三种方案,话说我使用的最多的就是包名,action的从来没注意过,但是开发过程中遇到了,还是记个笔记吧。

我们都知道action是配置在AndroidManifest.xml中组件的IntentFilter属性里的,所以这些方法最终校验的都是该属性。

×

大吉大利,晚上吃鸡

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 序言
  2. 2. 代码篇
    1. 2.1. 包名检查
    2. 2.2. ACTION检查
  3. 3. 总结
| | 总字数统计:93.5k