我有一个使用3种存储的应用程序:内部存储,外部SD,如果版本> = 6.0,则为formatted as internal的SD。
我使用getExternalFilesDirs()
获取外部SD路径,getFilesDir()
使用内部存储,Environment.getExternalStorageDirectory()
采用(=内部)SD路径。
现在,如果我想获得免费空间,就像这样:
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作为替代存储,如果有的话我不需要它它上面没有自由空间,但这不可能是它的工作方式,是吗?