Android获取用户已安装app列表
16lz
2022-06-02
这篇文章主要介绍了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 如有侵权,请联系删除
更多相关文章
- Android时间获取之——Date、String、Long三种日期类型之间的相
- 2011.09.13(3)——— android 添加快捷方式并且图标上添加数字
- Android获取本机蓝牙地址
- Android内部存储和外部存储的获取方法
- android 获取sim卡运营商信息
- 学习笔记(01):FFmpeg打造Android万能音频播放器-OpenSL ES介绍并
- Android一次刷机
- FAQ00366]如何使Android应用程序获取系统权限
- Android中获取网页表单中的数据实现思路及代码