程序大概分成三个部分:
1.获取手机已安装的所有应用package的信息(其中包括用户自己安装的,还有系统自带的);
2.滤除系统自带应用;
3.通过列表显示出应用程序的图标(icon),和其他文字信息(应用名称,包名称package name,版本号等等)
首先,我们定义一个数据结构,来保存应用程序信息(icon,name,packageName,versionName,versionCode,等)
下面我们就来看看代码吧,这样我们大家看的风直观一些:
java代码:
public class AppInfo {
public String appName="";
public String packageName="";
public String versionName="";
public int versionCode=0;
public Drawable appIcon=null;
public void print(){
Log.v("app","Name:"+appName+" Package:"+packageName);
Log.v("app","Name:"+appName+" versionName:"+versionName);
Log.v("app","Name:"+appName+" versionCode:"+versionCode);
}
}
然后我们通过PackageManager 来获取已安装的应用包信息。
java代码:
ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packages.size();i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager());
appList.add(tmpInfo);
}//好啦 这下手机上安装的应用数据都存在appList里了。
那么如何判断一个应用是否为系统应用呢?
java代码:
if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){
//非系统应用
}else{
//系统应用
}
所以如果只需要获取到非系统应用信息,代码如下:
java代码:
ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packages.size();i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager());
if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){
appList.add(tmpInfo);//如果非系统应用,则添加至appList
}
}
分享到:
相关推荐
android获取手机应用信息 导入eclipse 即可运行
1.Android中获取所有应用程序列表信息 2.Android中获取系统应用程序列表信息 3.Android中获取第三方应用程序列表信息 4.Android中获取第三方应用程序列表信息
Android开发,获取当前手机安装的所有应用、根据包名获取应用信息、获取当前应用程序的包名、获取程序 图标、获取程序的版本号、获取程序的名字、获取程序的权限、获取程序的签名、获取当前包名的 SHA1、将获取到得...
Android获取指定应用,单独应用的流量统计
获取android设备已安装应用信息(包括:应用名称、图标、包名等)
android获取已安装应用的信息 运行正常
通过queryIntentActivities()方法,使用PackageManager,获取应用程序的信息使用
Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
android获取应用程序信息小Demo。应用名称,版本,缓存大小,应用程序大小等
Android应用源码45套安卓源码合集: android中文离线发音引擎FOCTTS使用源码.rar Android应用源码(精)LBS...Android应用源码获取手机信息.rar Android应用源码讯飞语音测试源码.rar Android应用源码飞碟说欢迎界面.rar
本源码演示Android如何获取系统内置的APP应用列表信息,比如获取android系统中的录音机、相机、应用包访问权限帮助程序、android系统信息、设置、联系人存储、外部存储设备属性、Android键盘(AOSP)、移动数据信息...
获取手机上android应用程序的权限列表,在打印log里,log的TAG是jishen
这个小程序主要实现了获取程序包的相关信息,主要包括包的icon,包名还有应用的名称。代码中有详细的注释,方便阅读。
在Android设备中,按Back键会将当前的Activity出栈销毁,而按HOME键却会将之隐藏到后台。如若有多个这样的程序这样操作,我们不知道后台到底有多少个正在运行的应用程序。此程序的目的就列举出后台正在运行的应用...
android 7.1 获取各个应用的各种内存信息的app demo,不需要用jaredrummler开源库
Android系统信息和Apk应用信息获取.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
这个应用很简单就是获取Android中手机中应用用电排行的,很方便实用的
android程序,获取所有应用程序的数据。
网络上讲解MVC模式的文献一搜一大把,今天我们把理论与实际结合一下,通过获取Android手机应用列表来实际看一看什么是MVC。
获取取手机敏感信息,Android 6.0之上兼容