您的位置:首页 > 移动开发 > Android开发

Android获取已安装程序的信息

2016-06-26 09:45 561 查看
public class AppInfoParser {

private static String tag = "AppInfoParser";

public static List<AppInfo> getAppInfos(Context context){

//首先获取到包的管理者

PackageManager packageManager = context.getPackageManager();
//获取到所有的安装包
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);

ArrayList<AppInfo> appInfos = new ArrayList<>();

for (PackageInfo installedPackage : installedPackages) {

AppInfo appInfo = new AppInfo();

String packageName = installedPackage.packageName;

appInfo.setPackageName(packageName);

//获取到图标
Drawable icon = installedPackage.applicationInfo.loadIcon(packageManager);

appInfo.setIcon(icon);

//获取到应用的名字
String appName = installedPackage.applicationInfo.loadLabel(packageManager).toString();

appInfo.setAppName(appName);

//获取到安装包的路径
String sourceDir = installedPackage.applicationInfo.sourceDir;

File file = new File(sourceDir);
//获取到安装apk的大小
long apkSize = file.length();
//格式化apk的大小
appInfo.setApkSize(Formatter.formatFileSize(context,apkSize));

//            System.out.println("应用名字:" +appName);
//            System.out.println("应用路径:" +sourceDir);
//            System.out.println("应用大小:" +apkSize);
//            System.out.println("=========================:");

int flags = installedPackage.applicationInfo.flags;
//判断当前是否是系统app
if((flags & ApplicationInfo.FLAG_SYSTEM) !=0){
//那么就是系统app

appInfo.setUserApp(false);
}else{
//那么就是用户app
appInfo.setUserApp(true);
}

if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE)!=0){
//那么当前安装的就是sd卡
appInfo.setSD(true);

}else{
//那么就是手机内存
appInfo.setSD(false);
}

appInfos.add(appInfo);
}

return appInfos;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: