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来获取已安装的应用包信息。

ArrayList appList = 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{
	//系统应用        
}

所以如果只需要获取到非系统应用信息,代码如下:

ArrayList appList = 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="" }="" }="">
暂无评论
  • 1:请一针见血的评论。
  • 2:评论需要审核通过后才能显示。
  • 3:评论字数限制在1000字以内。
  • 当前字数:0
热门文章
推荐文章
随机文章
关于本站 - 广告服务 - 版权声明 - 联系我们 - 友情链接 - 网站地图 - 帮助中心