首页 > 解决方案 > 获取安卓设备存储容量

问题描述

我想获得设置 -> 存储中显示的设备存储容量 - 通常类似于:32 / 64 / 128 / 256 GB。

我使用了这篇文章(以及一些类似的): 可以获得总存储容量吗?

我有这个代码:

    StatFs stat = new StatFs(Environment.getDataDirectory().getAbsolutePath());
    long gb = 1024 * 1024 * 1024;
    long size = stat.getTotalBytes() / gb;

这在 64GB 三星 S8 上返回 47GB,在 128GB 华为 Mate 10 上返回 111GB——这不是我想要的。

如何获得 64GB / 128GB 的​​值?谢谢!!

更新

这与这个问题相同:How to get exact capacity from storage。不幸的是,接受的答案表明无法获取存储信息-我希望得到不同的答案..可能不使用StatFs,而是使用其他方式。

标签: android

解决方案


您可以尝试使用这样的东西(在 API 级别 26 中添加):

  1. 使用StorageManager#getStorageVolumes() https://developer.android.com/reference/android/os/storage/StorageManager#getStorageVolumes()获取所有存储卷 UUID

  2. 通过StorageStatsManager#getTotalBytes(java.util.UUID) https://developer.android.com/reference/android/app/usage/StorageStatsManager#getTotalBytes(java.util.UUID)您可以找到每个存储的总字节数

  3. 总结您需要的所有存储的大小。


推荐阅读