得到安卓所有已安装程序的信息

得到安卓手机中所有已安装的应用程序信息,包括系统软件和用户自己的软件

核心代码如下:

	/**
	 * 获取所有已安装的应用程序
	 * 
	 * @param context
	 *            上下文
	 * @return 本机所有程序信息
	 */
	public static ArrayList getAllAppInfo(Context context) {
		ArrayList appList = new ArrayList();
		List packageInfos = context.getPackageManager()
				.getInstalledPackages(0);
		for (int i = 0; i < packageInfos.size(); i++) {
			PackageInfo pInfo = packageInfos.get(i);
			AllAppInfo allAppInfo = new AllAppInfo();
			allAppInfo.setAppname(pInfo.applicationInfo.loadLabel(
					context.getPackageManager()).toString());// 应用程序的名称
			allAppInfo.setPackagename(pInfo.packageName);// 应用程序的包
			allAppInfo.setVersionCode(pInfo.versionCode);// 版本号
			allAppInfo.setFlags(pInfo.applicationInfo.flags); // uid号

			String dir = pInfo.applicationInfo.publicSourceDir;
			int size = Integer.valueOf((int) new File(dir).length());
			allAppInfo.setSize(size);// 应用大小

			allAppInfo.setLastInstal(pInfo.firstInstallTime);
			// allAppInfo.setProvider(pInfo.providers);
			allAppInfo.setAppicon(pInfo.applicationInfo.loadIcon(context
					.getPackageManager()));
			allAppInfo.setInstalPath(pInfo.applicationInfo.sourceDir);
			appList.add(allAppInfo);
		}
		return appList;
	}


以下是表示程序的基本信息的bean:

package com.lqr.utils;

import java.util.Arrays;

import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.graphics.drawable.Drawable;

/**
 * 程序的基本信息
 * 
 * @author CSDN_LQR
 * 
 */
public class AllAppInfo {
	private int versionCode = 0; // 版本号
	private String appname = "";// 程序名称
	private String packagename = ""; // 包名称
	private Drawable appicon;// 图标
	private int size;// 应用大小
	private long lastInstal;// 最后一次安装时间
	private ProviderInfo[] provider;// 供应商
	private String InstalPath;// 安装路径
	private int flag; // 判断是不是系统应用

	public int getVersionCode() {
		return versionCode;
	}

	public void setAppicon(PackageManager packageManager) {
		// TODO Auto-generated method stub
	}

	public void setVersionCode(int versionCode) {
		this.versionCode = versionCode;
	}

	public String getAppname() {
		return appname;
	}

	public void setAppname(String appname) {
		this.appname = appname;
	}

	public String getPackagename() {
		return packagename;
	}

	public void setPackagename(String packagename) {
		this.packagename = packagename;
	}

	public Drawable getAppicon() {
		return appicon;
	}

	public void setAppicon(Drawable appicon) {
		this.appicon = appicon;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	/**
	 * @return the lastInstal
	 */
	public long getLastInstal() {
		return lastInstal;
	}

	/**
	 * @param firstInstallTime
	 *            the lastInstal to set
	 */
	public void setLastInstal(long firstInstallTime) {
		this.lastInstal = firstInstallTime;
	}

	/**
	 * @return the provider
	 */
	public ProviderInfo[] getProvider() {
		return provider;
	}

	/**
	 * @param providers
	 *            the provider to set
	 */
	public void setProvider(ProviderInfo[] providers) {
		this.provider = providers;
	}

	/**
	 * @return the instalPath
	 */
	public String getInstalPath() {
		return InstalPath;
	}

	/**
	 * @param instalPath
	 *            the instalPath to set
	 */
	public void setInstalPath(String instalPath) {
		InstalPath = instalPath;
	}

	public void setFlags(int flag) {
		this.flag = flag;
	}

	public int getFlags() {
		return this.flag;
	}

	@Override
	public String toString() {
		return "AllAppInfo [versionCode=" + versionCode + ", appname="
				+ appname + ", packagename=" + packagename + ", appicon="
				+ appicon + ", lastInstal=" + lastInstal + ", provider="
				+ Arrays.toString(provider) + ", InstalPath=" + InstalPath
				+ ", flag=" + flag + "]";
	}

}

区分系统软件和用户安装的软件:

	ArrayList mAllAppInfo = getAllAppInfo(UIUtils.getContext());
	List localAppList = new ArrayList();
	// 处理一下数据
	for (AllAppInfo appInfo : mAllAppInfo) {
		if ((appInfo.getFlags() & ApplicationInfo.FLAG_SYSTEM) > 0) {// 如果判定为系统应用

		} else {// 本地应用
			localAppList.add(appInfo);
		}
	}


下图是自己做的一个小Demo:

得到安卓所有已安装程序的信息_第1张图片

你可能感兴趣的:(Android笔记)