黑马程序员技术交流社区

标题: 手机应用管理1 [打印本页]

作者: woshiku    时间: 2015-9-10 08:51
标题: 手机应用管理1
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;
    }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2