Android开发之通过包管理器获取安装应用信息
最近在自己写一个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开发之通过包管理器获取安装应用信息的更多相关文章
- 当通过Nuget包管理器获取还原组时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项
当通过Nuget包管理器获取还原组件时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项 时 解决方法: 工具---扩展和更新,把Nuget包管理器卸载后,重启VS,再安装,现打开VS项 ...
- PHP Composer 包管理器的安装和使用
一,包管理器的安装 01,首先确定 php 命令能够全局使用,要是不能请修改环境变量 02,使用 curl 命令安装 => curl -sS http://install.phpcomposer ...
- [视频教程] 包管理器方式安装使用openresty新手上路
OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态Web应用.Web ...
- Bower => 前端开发也有包管理器
摘要: 一直以来npm,pip等各种包管理器好像都和前端开发没什么太大关系,当然因为nodejs的原因可能感觉npm会亲切一些,不过终归不是针对客户端的包管理工作,所以Bower的出现确实让人眼前一亮 ...
- 使用 Windows 包管理器 (winget) 安装 .Net
用户可以在 Windows 10 和 Windows 11 计算机上使用 winget 命令行工具来发现.安装.升级.删除和配置应用程序. 此工具是 Windows 程序包管理器服务的客户端接口. 以 ...
- Android开发5:布局管理器2(表格布局TableLayout)
版本:Android4.3 API18 学习整理:liuxinming 概念 TableLayout继承了LinearLayout,因此它的本质依然是线性布局管理器. 表格布局采 ...
- 详解python包管理器pip安装
pip对于使用python的朋友并不陌生,当你想安装python模块的时候一定会首先想到它.pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品. 今天来说 ...
- windows下python的包管理器pip安装
pip: A tool for installing and managing Python packages. 要用到第三方包,python的版本就必须是2.7 https://pypi.pyth ...
- mac包管理器Homebrew安装命令
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
随机推荐
- kindEditor富文本编辑器
用法参考:http://kindeditor.net/docs/usage.html 一.使用 . 修改HTML页面 在需要显示编辑器的位置添加textarea输入框. <textarea i ...
- specialized English for automation-Lesson 3 CMOS Logic Circuit
CMOS logic is a newer technology, based on the use of complementary MOS transistors toperform logic ...
- ubuntu:NVIDIA设置性能模式,以降低CPU使用、温度
NVIDIA设置性能模式,以降低CPU使用.温度 ubuntu安装完NVIDIA显卡驱动后 终端输入 nvidia-settings 选择OpenGL Settings->Image Setti ...
- protel 99se 加载库文件 files not recognised 解决办法-转
WIN7操作系统下,protel99se添加元件库的操作方法(非修改ADVSch99SE方法) 最近更换了新电脑,操作系统是正版的WIN7,在用protel时发现元件库无法加载,很是郁闷,上网查找解决 ...
- 采用Serverless架构搭建Web应用
本文会向你介绍一种新的可能,一种无服务器的方案来搭建Web应用.使用这个方案大部分运维方面的问题就不需要你自己操心了,而且也省去运行服务器的费用.本文从无服务的优势与限制两方面带您初识Serverle ...
- 各开源 bbs 程序比较
主要是集中在 php 开源轻巧的程序. 搜索到一个逼乎的一个帖子:https://www.zhihu.com/question/20655704 ,顺藤摸瓜 下. carbon forum 第一个测试 ...
- MySQl中隔离级别和悲观锁乐观锁
1.MySql的事物支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务.行级锁.并发 Ber ...
- 各种Java加密算法
如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorit ...
- 6款实用的硬盘、SSD固态硬盘、U盘、储存卡磁盘性能测试工具
一.检测工具名称汇总 HDTune ATTO Disk Benchmark CrystalDiskMark AS SSD Benchmark Parkdale CrystalDiskInfo 二.各项 ...
- Python的安装和使用ubuntu下
ubuntu下Python的安装和使用 https://www.cnblogs.com/luckyalan/p/6703590.html ubuntu下Python的安装和使用 1 文章介绍 本文介绍 ...