这篇文章主要介绍了Android开发获取系统中已安装程序信息的方法,可实现Android针对系统中已安装程序名称、路径、大小、图标、是否为系统app等信息的获取功能,需要的同学可以参考下

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 android.text.format.Formatter;import com.orhanobut.logger.Logger;import java.io.File;import java.util.ArrayList;import java.util.List;public class AppInfoParser {    private static String tag = "AppInfoParser";    public static List getAppInfos(Context context){        //首先获取到包的管理者        PackageManager packageManager = context.getPackageManager();        //获取到所有的安装包        List installedPackages = packageManager.getInstalledPackages(0);        ArrayList 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));            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);        }        Logger.d(appInfos.toString());        return appInfos;    }}
import android.graphics.drawable.Drawable;public class AppInfo {    //应用图标    private Drawable icon;    //应用的名字    private String appName;    //应用程序的大小    private String apkSize;    //表示用户程序    private boolean isUserApp;    //存储的位置.    private boolean isSD;    private String packageName;    public String getPackageName() {        return packageName;    }    public void setPackageName(String packageName) {        this.packageName = packageName;    }    public Drawable getIcon() {        return icon;    }    public void setIcon(Drawable icon) {        this.icon = icon;    }    public String getAppName() {        return appName;    }    public void setAppName(String appName) {        this.appName = appName;    }    public String getApkSize() {        return apkSize;    }    public void setApkSize(String apkSize) {        this.apkSize = apkSize;    }    public boolean isUserApp() {        return isUserApp;    }    public void setUserApp(boolean isUserApp) {        this.isUserApp = isUserApp;    }    public boolean isSD() {        return isSD;    }    public void setSD(boolean isSD) {        this.isSD = isSD;    }    @Override    public String toString() {        return "AppInfo{" +                "appName='" + appName + '\'' +                ", apkSize='" + apkSize + '\'' +                ", isUserApp=" + isUserApp +                ", isSD=" + isSD +                '}';    }}

本文转载自:https://www.tah1986.com/83354.html  如有侵权,请联系删除

更多相关文章

  1. Android时间获取之——Date、String、Long三种日期类型之间的相
  2. 2011.09.13(3)——— android 添加快捷方式并且图标上添加数字
  3. Android获取本机蓝牙地址
  4. Android内部存储和外部存储的获取方法
  5. android 获取sim卡运营商信息
  6. 学习笔记(01):FFmpeg打造Android万能音频播放器-OpenSL ES介绍并
  7. Android一次刷机
  8. FAQ00366]如何使Android应用程序获取系统权限
  9. Android中获取网页表单中的数据实现思路及代码

随机推荐

  1. Java反射相关(一)
  2. mybatis项目报java.sql.SQLException: Nu
  3. Java逐行读写TXT文件
  4. 如何在java中获得一个常量?
  5. 当月的开始和结束日期
  6. Windows中结束占用某个端口的进程
  7. 程序员的发展方向有哪些
  8. 学习流行的JavaScript框架20120727-[jQue
  9. 《你不知道的JavaScript
  10. Java-子类和父类的几种关系