我们大家都知道在手机上我们可以查看图标来知道我们都安装了什么样的应用,但实际上载Android中我们可以获得你安装应用的各种信息,(虽然在我的应用程序中只需要获得ICON即可),比如:名称,版本,包等,不仅仅只是图标。这样的话,给我们就带来了和多的方便,如果长时间不用的话,在查看时我们能在很快的时间里来知道这个应用是干什么的。我们也可以马上判断一下我们现在是否还有得到这个应用,用得到的话我们就留着,如果用不到的话我们就马上下载这个应用,卸载了以后会给手机释放了很大的内存,这样对手机也是非常好的,手机的反应也会变快一些。
我们首先,可以创建一个用于存放应用程序信息的类结构。我们必须写这个,要不我们就不会看见你想要的信息,那么我们就来看看,代码如下:
class AppInfo {
private int versionCode = 0;
//名称
private String appname = "";
//包
private String packagename = "";
private String versionName = "";
//图标
private Drawable appicon = null;
}
上面的代码我们就写了名称、包、还有图标,如果你想写别的话,你也可以自己写很多关于这个应用的信息。在这里我就不一一给大家写了。我们主要就是这三种。
然后可以通过getPackageManager()函数获得PackageManager对象,而PackageManager中提供了getInstalledPackages函数可以获得已经安装的应用程序包。会返回所有已经安装的应用程序的列表。
我们然后通过如下代码取出所需要的信息即可。
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);
}
在这里我们用到了for循环,这个主要的意思是用循环来把所有的软件给显示出来。这里主要的是实例化一下ArrayList<AppInfo> appList = new ArrayList<AppInfo>();如果不实例化的话你不会被调用,这样的话ArrayList<AppInfo>这个数组中的软件就不会不显示出来。大家一定要记住了。我们得先实例化一下,再用循环。
我们需要注意的是:getInstalledPackages函数将会获得所有已经安装的应用程序,包括系统应用程序,这时你就要小心一些了,因为你要记住哪些是系统的应用。如果你要是把系统的软件给删了的话,那就得从新安装,这样会对我们很麻烦。如果要过滤系统应用程序,可以通过“packageInfo.versionName == null”来判断。这样的话对我们就方便很多了,因为这样你就不会怕把系统自带的软件给删除了。但在这里我就不多说了,大家回去自己试试看。