我正在尝试找到一种方法来查找手机上安装的 SD 卡的总大小和可用空间,根据我对 SOF 和 Android 开发人员网站的研究,我能够找到方法 getExternalStorageDirectory() 但根据Android API这会返回一个不一定是外部的目录:
“传统上这是一张 SD 卡,但它也可以作为设备中的内置存储实现,与受保护的内部存储不同,并且可以作为文件系统安装在计算机上。”
所以我从措辞的方式收集到“外部存储”目录实际上可以是多个物理存储设备(内部和外部存储器)的一部分。根据我的测试,我发现使用这种方法返回的大小大约是我实际 SD 卡大小的 1.5 倍。
所以我的问题是,是否有一种编程方式来返回 SD 卡上的总大小和可用空间?电话本身可以给我这些信息,所以我觉得应该有办法,但我现在不知所措......任何帮助将不胜感激!
编辑:这是我目前用于总大小的代码
private long TotalSDMemory(){
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getAbsolutePath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long totalSpace = totalBlocks * blockSize;
Log.d(TAG,"Size of total SD Memory: "+totalSpace);
Log.d(TAG, "External storage emulated: "+Environment.isExternalStorageEmulated());
return totalSpace;
}
编辑(2):我不知道这很重要,但我有一个三星 Galaxy S3,这是我用来测试代码的,显然三星的外部存储器有不同的文件结构。这是一个可以帮助其他人获得正确大小的链接: 获取三星手机中 SD 卡的大小