4

我有一个使用 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 作为替代存储,如果上面没有可用空间,我不需要它,但那不可能它应该工作的方式,可以吗?

4

0 回答 0