我有一个使用 3 种存储的应用程序:内部存储、外部 SD 以及如果版本 >= 6.0 则格式化为 internal的 SD 。
我通过使用获得外部 SD 路径,通过使用getExternalFilesDirs()
内部存储getFilesDir()
和通过(=内部)SD 路径获得Environment.getExternalStorageDirectory()
。
现在,如果我想获得空闲空间,如下所示:
StatFs statFs = new StatFs(storageDir);
long blocks = statFs.getAvailableBlocks();
return Formatter.formatFileSize(this, blocks * statFs.getBlockSize());
适用于内部存储和外部 SD,但对于采用的 SD,它返回与内部存储相同的值,这是没有额外 SD 空间的纯内部存储。
现在我的问题是:有没有办法获得由内部 + 采用 SD 组成的可用空间?据我所知,我什至不知道是否存在采用的 SD,因为无论它是否已安装,它getExternalFilesDirs()
始终包含路径/storage/emulated/0
(这是我测试的大多数设备的绝对路径)。Environment.getExternalStorageDirectory()
编辑:我最后只是检查可用空间getExternalStorageDirectory()
是否大于getFilesDir()
+ 100MB,因为我想使用采用的 SD 作为替代存储,如果上面没有可用空间,我不需要它,但那不可能它应该工作的方式,可以吗?