600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mo管理器java_Android开发之通过包管理器获取安装应用信息

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

时间:2019-05-12 10:02:52

相关推荐

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

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

获取手机安装应用信息:

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

public classAppBean {privateDrawable appIcon;privateString appName;private intappSize;private boolean isSd=false;private boolean isSystem=false;privateString appPackageName;publicString getApkPath() {returnapkPath;

}public voidsetApkPath(String apkPath) {this.apkPath =apkPath;

}privateString apkPath;publicString getAppPackageName() {returnappPackageName;

}public voidsetAppPackageName(String appPackageName) {this.appPackageName =appPackageName;

}publicDrawable getAppIcon() {returnappIcon;

}public voidsetAppIcon(Drawable appIcon) {this.appIcon =appIcon;

}publicString getAppName() {returnappName;

}public voidsetAppName(String appName) {this.appName =appName;

}public intgetAppSize() {returnappSize;

}public void setAppSize(intappSize) {this.appSize =appSize;

}public booleanisSd() {returnisSd;

}public void setSd(booleansd) {

isSd=sd;

}public booleanisSystem() {returnisSystem;

}public void setSystem(booleansystem) {

isSystem=system;

}

}

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

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

public static ListgetAllApk() {

ListappBeanList=new ArrayList<>();

AppBean bean=null;

PackageManager packageManager=UIUtils.getContext().getPackageManager();

List list=packageManager.getInstalledPackages(0);for(PackageInfo p:list) {

bean=newAppBean();

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=newFile(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);

}returnappBeanList;

}

需要注意几点:

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

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

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

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

略。

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。