StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;
来源 此外,使用这个内部大小。
StatFs stat = new StatFs(Environment.getDataDirectory().getPath());
long getTotalBytes - The total number of bytes supported by the file system.
对于较旧的API使用
int getBlockCount ()
int getBlockSize ()
StatFs stat = new StatFs(**path**);
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
val stat = StatFs(Environment.getExternalStorageDirectory().path)
val available = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
stat.blockCountLong * stat.blockSizeLong
} else {
stat.blockCount.toLong() * stat.blockSize.toLong()
}
val totalInMB = bytesAvailable / (1024*1024)
5条答案
按热度按时间sqougxex1#
API 18中引入了一些新方法。这是我用来获取总存储(内部+外部)的代码。
private static final long KILOBYTE = 1024;
oyjwcjzk2#
来源
此外,使用这个内部大小。
toe950273#
这个方法并不适用于所有的手机,大多数手机返回的是用户可用的内存总量,较少的系统内存。你可能会尝试在使用NDK的c++方法中使用'df -h' linux命令,但有些手机只使用系统(su)命令。所以总的来说,你不能。
x7yiwoj44#
StatFs-检索文件系统上空间的总体信息。这是Unix statvfs()的 Package 器。
从API级别18开始,我们使用
对于较旧的API使用
作为路径您使用Environment.getExternalStorageDirectory(),请检查此值。在具有多个共享/外部存储目录的设备中,此目录表示用户将与之交互的主存储。
你需要像这样使用path的字符串值:“/mnt/external_sd/”“/mnt/extSdCard/”
您可以检索所有**/mnt/**设备的列表,并使用其中一个值。
或者类似的东西
或
wpx232ag5#