获取Android设备的存储容量

时间:2018-10-30 05:30:03

标签: android

我想要获得设备的存储容量,如“设置”->“存储”中所示-通常为:32/64/128/256 GB。

我使用了这篇文章(以及一些类似的文章): It is possible to get total storage capacity?

我有以下代码:

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

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

如何获取64GB / 128GB值? 谢谢!

更新

这与以下问题相同:How to get exact capacity from storage。 不幸的是,被接受的答案指出不可能获得存储信息-我希望得到一个不同的答案..也许不使用 StatFs ,而是使用其他方法。

2 个答案:

答案 0 :(得分:0)

您可以使用下面的代码段获取内部内存总量。

File path=Environment.getDataDirectory();
StatFs stat=new StatFs(path.getPath());
long blockSize=stat.getBlockSize();
long availableBlocks=stat.getBlockCount();
long totalInternalMemory=availableBlocks*blockSize;

答案 1 :(得分:0)

您可以尝试使用类似的方法(在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. 您可以找到每个存储的总字节数

  4. 总结所需的所有存储空间。