Android获得应用的信息
程序大概分成三个部分:
1:获取手机已安装的所有应用package的信息(其中包括用户自己安装的,还有系统自带的);
2:滤除系统自带应用;
3:通过列表显示出应用程序的图标和其他文字信息(如应用名称,包名称package name,版本号等)
首先定义一个数据结构,来保存Android获得应用信息(icon,name,packageName,versionName,versionCode等)
下面我们看看代码,这样我们大家看的更直观一些:
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来获取已安装的应用包信息。
ArrayListappList = new ArrayList (); //用来存储获取的应用信息数据 List 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里了。那么如何判断一个应用是否为系统应用呢?
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)==0) { //非系统应用 } else{ //系统应用 }
所以如果只需要获取到非系统应用信息,代码如下:
ArrayListappList = new ArrayList (); //用来存储获取的应用信息数据 List 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保持屏幕常亮
- 下一篇:Android取得当前屏幕的截图
暂无评论