最近在自己写一个APP,有一个模块需要获取手机应用的一些信息。坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的。底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安装的应用信息。好了,不多说,看看效果图:

获取手机安装应用信息:

1.写一个JavaBean,用于存放应用信息,生产get,set方法。

public class AppBean {
private Drawable appIcon;
private String appName;
private int appSize;
private boolean isSd=false;
private boolean isSystem=false;
private String appPackageName; public String getApkPath() {
return apkPath;
} public void setApkPath(String apkPath) {
this.apkPath = apkPath;
} private String apkPath; public String getAppPackageName() {
return appPackageName;
} public void setAppPackageName(String appPackageName) {
this.appPackageName = appPackageName;
} public Drawable getAppIcon() {
return appIcon;
} public void setAppIcon(Drawable appIcon) {
this.appIcon = appIcon;
} public String getAppName() {
return appName;
} public void setAppName(String appName) {
this.appName = appName;
} public int getAppSize() {
return appSize;
} public void setAppSize(int appSize) {
this.appSize = appSize;
} public boolean isSd() {
return isSd;
} public void setSd(boolean sd) {
isSd = sd;
} public boolean isSystem() {
return isSystem;
} public void setSystem(boolean system) {
isSystem = system;
}
}

属性写的很清楚,这里就不再多做注释。

2.写一个工具类,通过这个工具类,获取到手机安装应用的信息。我们都知道,安卓的所有应用都在包管理中,基本上,一个应用对应着一个包信息,所以,我们可以通过包管理器获取,通过包管理器中getInstalledPackages(0);传一个0,获取到所有应用。具体实现代码:

public static List<AppBean> getAllApk() {
List<AppBean>appBeanList=new ArrayList<>();
AppBean bean=null;
PackageManager packageManager= UIUtils.getContext().getPackageManager();
List<PackageInfo> list=packageManager.getInstalledPackages(0);
for (PackageInfo p:list) {
bean=new AppBean();
bean.setAppIcon(p.applicationInfo.loadIcon(packageManager));
bean.setAppName(packageManager.getApplicationLabel(p.applicationInfo).toString());
bean.setAppPackageName(p.applicationInfo.packageName);
bean.setApkPath(p.applicationInfo.sourceDir);
File file=new File(p.applicationInfo.sourceDir);
bean.setAppSize((int) file.length());
int flags=p.applicationInfo.flags;
//判断是否是属于系统的apk
if ((flags& ApplicationInfo.FLAG_SYSTEM)!=0){
bean.setSystem(true);
}else {
bean.setSd(true);
}
appBeanList.add(bean); }
return appBeanList;
}

需要注意几点:

*获取应用的应用名要通过packageManager.getApplicationLabel(p.applicationInfo).toString(),如果通过p.applicationInfo.name是拿不到应用名字的。

*安卓中通过FlAG来标识应用是否是自带应用,判定方法如上。

*UIUtils.getContext()是我封装的方法,用于调用Context上下文。

3.通过JavaBean取出数据展示:

略。

好了,展示数据就可以由自己随意展示了,就写到这,希望这篇文章对你的生活和学习有所帮助。如果你想知道实现的效果,可以在下方评论留言,我会再下篇博客更新~

Android开发之通过包管理器获取安装应用信息的更多相关文章

  1. 当通过Nuget包管理器获取还原组时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项

    当通过Nuget包管理器获取还原组件时,出现  提示 “xxxxx”已拥有为“xxxxx”定义的依赖项 时 解决方法: 工具---扩展和更新,把Nuget包管理器卸载后,重启VS,再安装,现打开VS项 ...

  2. PHP Composer 包管理器的安装和使用

    一,包管理器的安装 01,首先确定 php 命令能够全局使用,要是不能请修改环境变量 02,使用 curl 命令安装 => curl -sS http://install.phpcomposer ...

  3. [视频教程] 包管理器方式安装使用openresty新手上路

    OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态Web应用.Web ...

  4. Bower => 前端开发也有包管理器

    摘要: 一直以来npm,pip等各种包管理器好像都和前端开发没什么太大关系,当然因为nodejs的原因可能感觉npm会亲切一些,不过终归不是针对客户端的包管理工作,所以Bower的出现确实让人眼前一亮 ...

  5. 使用 Windows 包管理器 (winget) 安装 .Net

    用户可以在 Windows 10 和 Windows 11 计算机上使用 winget 命令行工具来发现.安装.升级.删除和配置应用程序. 此工具是 Windows 程序包管理器服务的客户端接口. 以 ...

  6. Android开发5:布局管理器2(表格布局TableLayout)

    版本:Android4.3 API18  学习整理:liuxinming 概念      TableLayout继承了LinearLayout,因此它的本质依然是线性布局管理器.      表格布局采 ...

  7. 详解python包管理器pip安装

    pip对于使用python的朋友并不陌生,当你想安装python模块的时候一定会首先想到它.pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品. 今天来说 ...

  8. windows下python的包管理器pip安装

    pip:  A tool for installing and managing Python packages. 要用到第三方包,python的版本就必须是2.7 https://pypi.pyth ...

  9. mac包管理器Homebrew安装命令

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

随机推荐

  1. Faces人脸识别项目简介

    Faces人脸识别 分为两个模块,Faces文件夹下存放人脸识别算法的代码,Web文件夹下存放网站搭建的代码 详情请查看各个模块下的readme文档 项目简介 核心算法 一款基于Dlib.opencv ...

  2. Ubuntu 16.04 日常工具

    shutter sudo apt-get install shutter indicator-sysmonitor 之前需要通过deb包安装,现在可以通过添加PPA安装: sudo add-apt-r ...

  3. C++设计模式之职责链模式

    代码实现: // chainResbonsibility.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stri ...

  4. 使TextView里面的文字滚动起来

    要使TextView里面的内容滚动起来,那么就要配置好几个参数, 1.focusable来获取焦点. 2.ellipsize来获得滚动的方法. 3.focusableInTouchMode来获取触摸方 ...

  5. L3-013 非常弹的球 (30 分)

    刚上高一的森森为了学好物理,买了一个“非常弹”的球.虽然说是非常弹的球,其实也就是一般的弹力球而已.森森玩了一会儿弹力球后突然想到,假如他在地上用力弹球,球最远能弹到多远去呢?他不太会,你能帮他解决吗 ...

  6. 小数第n位

    问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...

  7. test20181024 nan

    题意 nan 问题描述 我们有一个序列,现在他里面有三个数1,2,2.我们从第三个数开始考虑: 第三个数是2,所以我们在序列后面写2个3,变成1,2,2,3,3. 第四个数是3,所以我们在序列后面写3 ...

  8. windows默认文件浏览器大小

    windows打开之后,发现默认窗口很小.

  9. 在Windows Server 2012启用或关闭Internet Explorer增强的安全配置

    在 Windows Sever 2012 中打开 IE 浏览器时,IE10 会出现[已启用 Internet Explorer 增强的安全配置]的提示信息. 在安全性等级中会设置以[高安全性],如果我 ...

  10. ipython的使用

    改初始路径 还有一个坑,可以用notebook打开一个已经存在的文件,但是不能正常编辑(使用单元编辑),因为使用这个创建的东西根本就不是一个.py文件,如果代码编辑完毕,倒是可以通过下载那里选择下载成 ...