我想要获得设备的存储容量,如“设置”->“存储”中所示-通常为: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 ,而是使用其他方法。
答案 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中添加):
使用StorageManager#getStorageVolumes()
https://developer.android.com/reference/android/os/storage/StorageManager#getStorageVolumes()获取所有UUID的存储卷
StorageStatsManager#getTotalBytes(java.util.UUID)
https://developer.android.com/reference/android/app/usage/StorageStatsManager#getTotalBytes(java.util.UUID) 您可以找到每个存储的总字节数
总结所需的所有存储空间。