当前位置: 首页 > article >正文

Android 计算已安装应用的大小

一、方法一

// 获取PackageManager实例
PackageManager pm = context.getPackageManager();

try {
    // 获取ApplicationInfo
    ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
    
    // 获取应用大小(APK文件大小)
    long apkSize = new File(appInfo.sourceDir).length();
    
    // 获取数据大小(需要API 26+)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        long dataSize = new File(appInfo.dataDir).length();
        long totalSize = apkSize + dataSize;
    }
    
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

二、方法二

对于Android 8.0 (API 26)及以上版本,可以使用更精确的StorageStatsManager:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    StorageStatsManager storageStatsManager = 
        (StorageStatsManager) context.getSystemService(Context.STORAGE_STATS_SERVICE);
    
    try {
        StorageStats stats = storageStatsManager.queryStatsForUid(
            StorageManager.UUID_DEFAULT, 
            appInfo.uid
        );
        
        long appSize = stats.getAppBytes();
        long dataSize = stats.getDataBytes();
        long cacheSize = stats.getCacheBytes();
        long totalSize = appSize + dataSize + cacheSize;//单位byte
        
    } catch (IOException e) {
        e.printStackTrace();
    }
}

相关权限添加

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"
        tools:ignore="ProtectedPermissions" />


http://www.kler.cn/a/612593.html

相关文章:

  • 闲聊IT - 面向服务架构(SOA)的发展历史
  • 北理工计算机考研复试上机2017年真题
  • HTML5 新的 Input 类型学习笔记
  • 新一代ITSM:燕千云重构企业智慧服务生态体系
  • 手写数据库MYDB(一):项目启动效果展示和环境配置问题说明
  • 【测试工具】如何使用 burp pro 自定义一个拦截器插件
  • 工具介绍《WireShark》
  • Ubuntu22.04美化MacOS主题
  • 前端技术(28) : 拖拽、粘贴和点击浏览文件上传
  • 3大支柱+8种方法:拆解分布式系统性能优化的底层逻辑
  • 谷歌决定终止开源Android
  • 【黑皮书】 AVL树
  • kafka部署手册
  • 关于ArcGIS中加载影像数据,符号系统中渲染参数的解析
  • HarmonyOS:GridObjectSortComponent(两个Grid之间网格元素交换)
  • 深度探秘K8s服务(Service):架构基石与应用实践
  • 【LeetCode 热题 100】解答汇总
  • 苏宁开放平台关键字搜索接口接入教程‌
  • springboot 四层架构之间的关系整理笔记一
  • es 3期 第27节-运用Script脚本实现复杂需求