package com.appassit.provider;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import com.appassit.model.AppInfo;
/**
* 业务方法,提供手机里面安装的所有的应用程序信息
*/
public class AppInfoProvider {
/**
* 获取所有的安装的应用程序信息。
*
* @param context
* 上下文
* @return
*/
public static List<AppInfo> getAppInfos(Context context) {
PackageManager pm = context.getPackageManager();
// 所有的安装在系统上的应用程序包信息。
List<PackageInfo> packInfos = pm.getInstalledPackages(0);
List<AppInfo> appInfos = new ArrayList<AppInfo>();
for (PackageInfo packInfo : packInfos) {
AppInfo appInfo = new AppInfo();
// packInfo 相当于一个应用程序apk包的清单文件
String packname = packInfo.packageName;
Drawable icon = packInfo.applicationInfo.loadIcon(pm);
String name = packInfo.applicationInfo.loadLabel(pm).toString();
int flags = packInfo.applicationInfo.flags;// 应用程序信息的标记 相当于用户提交的答卷
if ((flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// 用户程序
appInfo.setUserApp(true);
} else {
// 系统程序
appInfo.setUserApp(false);
}
if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0) {
// 手机的内存
appInfo.setInRom(true);
} else {
// 手机外存储设备
appInfo.setInRom(false);
}
appInfo.setPackname(packname);
appInfo.setIcon(icon);
appInfo.setName(name);
appInfos.add(appInfo);
}
return appInfos;
}
public static List<AppInfo> getAppInfoMd5(Context context) {
PackageManager pm = context.getPackageManager();
// 所有的安装在系统上的应用程序包信息。
List<PackageInfo> packInfos = pm.getInstalledPackages(0);
List<AppInfo> appInfos = new ArrayList<AppInfo>();
for (PackageInfo packInfo : packInfos) {
AppInfo appInfo = new AppInfo();
// packInfo 相当于一个应用程序apk包的清单文件
String packname = packInfo.packageName;
Drawable icon = packInfo.applicationInfo.loadIcon(pm);
String name = packInfo.applicationInfo.loadLabel(pm).toString();
String sourceDir = packInfo.applicationInfo.sourceDir;
int flags = packInfo.applicationInfo.flags;// 应用程序信息的标记 相当于用户提交的答卷
if ((flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// 用户程序
appInfo.setUserApp(true);
} else {
// 系统程序
appInfo.setUserApp(false);
}
appInfo.setPackname(packname);
appInfo.setIcon(icon);
appInfo.setName(name);
appInfo.sourceDir = sourceDir;
appInfos.add(appInfo);
}
return appInfos;
}
}