在frameworks/base/core/java/android/os/storage/StorageManager.java 在方法
/** {@hide} */
public long getPrimaryStorageSize() {
return FileUtils.roundStorageSize(Environment.getDataDirectory().getTotalSpace()
+ Environment.getRootDirectory().getTotalSpace()
+++ + Environment.getOemDirectory().getTotalSpace()
+++ + Environment.getVendorDirectory().getTotalSpace()
);
}
简单粗暴方式, 加上 Environment.getOemDirectory().getTotalSpace()和
Environment.getVendorDirectory().getTotalSpace()
还有一种方式在直接去读取、sys/block/** emmc总扇区数*512。
原因是settngs获取值向上取整,当emmc4或者8G时取值不正常,emmc 16或者32G时显示正常。