A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© woshiku 中级黑马   /  2015-9-10 08:51  /  459 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.woshiku.deleapp.enginee;
import java.io.File;
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.woshiku.deleapp.domian.AppInfo;
public class AppInfos {
    public static List<AppInfo> getAppInfos(Context context){
       List<AppInfo> packageAppInfos = new ArrayList<AppInfo>();
        //获取到包的管理者
        PackageManager packageManager = context.getPackageManager();
        //获取到安装包
        List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
        for (PackageInfo installedPackage : installedPackages) {
            AppInfo appInfo = new AppInfo();
            //获取到应用程序的图标
            Drawable drawable = installedPackage.applicationInfo.loadIcon(packageManager);
            appInfo.setAppIcon(drawable);
            //获取到应用程序的名字
            String apkName = installedPackage.applicationInfo.loadLabel(packageManager).toString();
            appInfo.setAppName(apkName);
            //获取到应用程序的包名
            String packageName = installedPackage.packageName;
            appInfo.setAppPackageName(packageName);
            //获取到apk资源的路径
            String sourceDir = installedPackage.applicationInfo.sourceDir;
            File file = new File(sourceDir);
            //apk的长度
            long apkSize = file.length();
            appInfo.setAppSize(apkSize);

            System.out.println("---------------------------");
            System.out.println("程序的名字:" + apkName);
            System.out.println("程序的包名:" + packageName);
            System.out.println("程序的大小:" + apkSize);

            //获取到安装应用程序的标记
            int flags = installedPackage.applicationInfo.flags;

            if((flags & ApplicationInfo.FLAG_SYSTEM) !=0 ){
              //表示系统app
                appInfo.setAppSource(false);
            }else{
              //表示用户app
                appInfo.setAppSource(true);
            }
            if((flags& ApplicationInfo.FLAG_EXTERNAL_STORAGE) !=0 ){
                //表示在sd卡
                appInfo.setAppRom(false);
            }else{
                //表示内存
                appInfo.setAppRom(true);
            }
            packageAppInfos.add(appInfo);
        }

        return packageAppInfos;
    }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马