android 获取本机已安装应用清单

算法破浪使
• 阅读 2348

业务场景

最近在项目中用到了应用下载的功能,但是需要判断本机中是否已经安装了该应用,如果本机已经安装,则过滤掉应用列表中可下载的应用。

该功能主要是用了的PackageManager的管理工具,Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过PackageManager,我们就可以获取应用程序信息。

# 实现方案
项目中用到了工具类AndroidUtilCode中的AppUtils.java工具类,该工具类中提供了获取本机已安装应用的清单信息。主要代码为:

  public static List<AppInfo> getAppsInfo() {
        List<AppInfo> list = new ArrayList<>();
        PackageManager pm = Utils.getApp().getPackageManager();
        if (pm == null) return list;
        List<PackageInfo> installedPackages = pm.getInstalledPackages(0);
        for (PackageInfo pi : installedPackages) {
            AppInfo ai = getBean(pm, pi);
            if (ai == null) continue;
            list.add(ai);
        }
        return list;
    }

获取到的包信息主要为:

{"icon":{"mBitmapState":{},"mTargetDensity":560,"mCallback":null,"mSrcDensityOverride":0},"isSystem":false,
"name":"BRVAH","packageName":"com.chad.baserecyclerviewadapterhelper",
"packagePath":"/data/app/com.chad.baserecyclerviewadapterhelper-li-BfpiDYm0aGt_Gt7ngMg\u003d\u003d/base.apk",
"versionCode":9,"versionName":"3.0"}

然后可以根据对应的包名信息来进行过滤,过滤掉本机已经安装的应用。特此记录下。

本文由博客一文多发平台 OpenWrite 发布!
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
android开发笔记之多媒体—播放音频(音乐)
Android应用增加动画,视频,音乐等多媒体功能,因此为手机提供音频录制,播放,视频录制,播放的功能十分重要。Android提供了常见音频,视频的编码,解码机制,Android支持的音频格式有MP3,WAV和3GP等,支持的视频格式有MP4和3GP等。Android提供了这些多媒体的支持类,可以非常方便地在手机应用中播放音频,
Easter79 Easter79
3年前
turnserver安装
项目中用到了webrtc,他的p2p通过ICE实现,其中需要stun/turn服务器接入。我用的google开源的,很好用,原来叫做turnserver,后来改名为corturn,git有下载连接。其实安装,部署配置都很简单,有很多分享。重点是怎么启动。turnserverafvmobilitym100maxbps1
刘望舒 刘望舒
4年前
Android AOSP基础(五)Android Studio调试系统源码的三种方式
AOSP基础Android框架层本文首发于微信公众号「刘望舒」前言作为应用开发,我们将AOSP源码下载下来后,去查看源码已经足够用,如果想更进一步,可以学习调试源码,这样有助于了解系统源码和原理。调试系统源码的方式有很多种,今天分享出来的是比较适合应用开发的三种,分别是AOSP源码项目调试、导入部分源码调试、新建Android项目调试。需要注意的是,这三
易娃 易娃
4年前
Android开发 - 获取Android设备的唯一标识码(Android 6.0或更高)
在我们的APP开发中,通常需要获取到设备的唯一标识。在Android6.0之前,有很多方法我们可以方便获取到硬件的唯一标识,但是在Android6.0之后,Android系统大幅限制了我们获取设备的硬件信息。Android6.0之前的方法(已过时)1.DEVICE\_ID通getSystem
Stella981 Stella981
3年前
Android 8.1实现静默升级踩过的坑
最近在做Android8.1的系统自动升级app的功能,遇到不少坑,特在这里记录下来。首先,我这个自己做的安卓主板,并且安卓系统是经过root过的。如果你的系统没有root,请移步,这篇文章不适合你!先说需求,我的app会自动从服务器上下载最新版的apk安装包,然后自动安装,app监听了android.intent.action.PACKAGE
Stella981 Stella981
3年前
Linux(Ubuntu)下MySQL的安装与配置
1)首先检查系统中是否已经安装了MySQL在终端里面输入sudonetstattap|grepmysql若没有反映,没有显示已安装结果,则没有安装。若如下显示,则表示已经安装!(https://static.oschina.net/uploads/img/201708/25092909_pFSr.png)2)如果
Stella981 Stella981
3年前
Android 应用程序之间数据共享—ContentProvider
原帖链接:http://www.moandroid.com/?p157Android应用程序之间数据共享—ContentProviderBy:海市蜃楼|In: Android开发(https:/
Stella981 Stella981
3年前
Android 上使用其他应用的功能
//安卓打开指定APP功能,appPackageName,appClassName可以在Logcat中找到      ComponentName component  new ComponentName("appPackageName","appClassName");      Intent intent  new
Wesley13 Wesley13
3年前
centos环境下如何安装Mysql数据库
昨天晚上折腾了一整天,终于在linux环境上安装成功了mysql数据库,首先用命令rpmqa|grepmysql,查询电脑上是否已经安装了mysql.如果有,如果没有安装,但是有一些相关的依赖包,则删除已经安装的mysql依赖包.使用rpme命令删除。然后在官网上下载安装包,需要下载两个:MySQLserver5.6.16
Stella981 Stella981
3年前
Linux软件源修改(Sources.list配置文件)
【导读】下面讲解如何重新定义、或者自定义软件源的获取地址!由于linux系统在安装一个软件时,会通过Sources.list配置文件获取软件源地址,从指向的地址中获取我们所需要的安装包,然后下载到本机中,通过修改该文件我们可以自定义需要要指向的软件源地址!语法格式:typeuridistribution\component1\\
绣鸾 绣鸾
1年前
MenubarX for mac(菜单栏浏览器)
是一款功能强大的Mac菜单栏浏览器。它可以在菜单栏中添加一些WebApp,您可以随时在菜单栏中使用这些Web应用程序。它基于网页,因此不需要为小工具单独安装应用程序。MenubarX将网页添加到菜单栏中,并用作本机应用程序。它将为您打开Web应用程序的新世