这篇文章主要介绍了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. 2011.09.13(3)——— android 添加快捷方式并且图标上添加数字
  2. FAQ00366]如何使Android应用程序获取系统权限
  3. android拦截短信并屏蔽系统的Notification
  4. android——wifi系统架构
  5. Android学习系列(40)--Android主题和样式之系统篇(下)
  6. Android 打开系统蓝牙设置

随机推荐

  1. 曝Android机冷冻后变"傻" 加密数据随意访
  2. Android应用开发笔记(13): Android移动应
  3. 2016年10月Android岗校招笔试面试总结
  4. findlibrary returned null产生的联想,And
  5. 使用Vitamio打造自己的Android万能播放器
  6. Android项目开发,不能不了解的第三方库!(齐
  7. Managing Your App's Memory 翻译
  8. Android Studio怎样提示函数使用方法
  9. android实现滚动播放
  10. [置顶] Android 自定义View实现竖直跑马