最近在自己写一个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取出数据展示:

略。

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

最新文章

  1. java的poi技术读取和导入Excel
  2. Maven学习(九)插件介绍
  3. Memcached通用类(基于Memcached Client Library)
  4. angularjs transclude demo
  5. npoi z
  6. gb2312编码提交url乱码解决
  7. Java IO(一):IO和File
  8. [USACO 08DEC]Secret Message
  9. APIO 2014
  10. 什么是javabean及其用法(转)
  11. Java模拟斗地主发牌和洗牌
  12. idea集成uglifyjs2
  13. linux下recv 、send阻塞、非阻塞区别和用法
  14. 20155222 c语言实现pwd命令
  15. C#学习笔记之(Hellow,WORLD;常量和变量;键盘输入和输出;数据类型转换;计算器)
  16. Ruby(1):入门
  17. BOM的节点方法和属性
  18. 01-JVM内存模型:程序计数器
  19. 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)
  20. Linux 安装reids

热门文章

  1. LINQ 分页 和存储过程分页
  2. java远程下载文件到本地
  3. Google Flutter框架:使用VS Code进行开发
  4. [QT][DEMO] QTableWidget 设置某一列禁止编辑
  5. MacBook下java环境的搭建
  6. graphql-binding openapi 集成demo
  7. 关于location.href赋值的php用法
  8. cocos2dx 3.0 +VS2013 环境搭建
  9. 说说 PADS Layout 中的第 20 层和 第 25层
  10. LDAP基本概念