android - 获取安卓设备存储容量
问题描述
我想获得设置 -> 存储中显示的设备存储容量 - 通常类似于: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,而是使用其他方式。
解决方案
您可以尝试使用这样的东西(在 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)您可以找到每个存储的总字节数总结您需要的所有存储的大小。
推荐阅读
- python - 使用 python pandas 找到最高的增长?
- r - 使用 AlgDesign 包的 optFederov 的问题
- r - nVennr。更改标准表格数字并删除图例
- bitbucket - 从 Gerrit 到 Bitbucket 的远程分支
- javascript - $root 被 shallowMount 包装器 $root 覆盖
- java - 如何在appium中进行编辑文本错误消息验证
- objective-c - 我可以在 objc 中的类别上定义一个常量吗
- r - R data.table:将点滚动到网格
- makefile - Building FMINUIT from source for Octave
- java - getView-method in customized Adapter is not called