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

来源:互联网 发布:js微信短网址生成api 编辑:程序博客网 时间:2024/05/21 07:49

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

核心代码如下:

<span style="white-space:pre"></span>/** * 获取所有已安装的应用程序 *  * @param context *            上下文 * @return 本机所有程序信息 */public static ArrayList<AllAppInfo> getAllAppInfo(Context context) {ArrayList<AllAppInfo> appList = new ArrayList<AllAppInfo>();List<PackageInfo> 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;}@Overridepublic String toString() {return "AllAppInfo [versionCode=" + versionCode + ", appname="+ appname + ", packagename=" + packagename + ", appicon="+ appicon + ", lastInstal=" + lastInstal + ", provider="+ Arrays.toString(provider) + ", InstalPath=" + InstalPath+ ", flag=" + flag + "]";}}

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

<span style="white-space:pre"></span>ArrayList<AllAppInfo> mAllAppInfo = getAllAppInfo(UIUtils.getContext());<span style="white-space:pre">List<AllAppInfo> localAppList = new ArrayList<AllAppInfo>();</span>// 处理一下数据for (AllAppInfo appInfo : mAllAppInfo) {if ((appInfo.getFlags() & ApplicationInfo.FLAG_SYSTEM) > 0) {// 如果判定为系统应用} else {// 本地应用localAppList.add(appInfo);}}


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



0 0
原创粉丝点击