Android开发之通过包管理器获取安装应用信息

怀抱观古今,寝食展戏谑。这篇文章主要讲述Android开发之通过包管理器获取安装应用信息相关的知识,希望能为你提供帮助。
  最近在自己写一个APP,有一个模块需要获取手机应用的一些信息。坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的。底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安装的应用信息。好了,不多说,看看效果图:

Android开发之通过包管理器获取安装应用信息

文章图片

【Android开发之通过包管理器获取安装应用信息】获取手机安装应用信息:
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取出数据展示:
  略。
好了,展示数据就可以由自己随意展示了,就写到这,希望这篇文章对你的生活和学习有所帮助。如果你想知道实现的效果,可以在下方评论留言,我会再下篇博客更新~
 

    推荐阅读