我无法控制的第三方库将文件保存在:
/storage/emulated/0/Android/data/[packagename]/files
我知道检查磁盘上可用于内部和外部存储的存储的不同方法:Android get free size of internal/external memory。检查上述路径可用存储的正确方法是什么?
内部,外部或某种组合,取决于所使用的设备及其存储类型。 IE浏览器。在此检查中应该考虑adoptable storage吗?
或者使用粘性广播Intent.ACTION_DEVICE_STORAGE_LOW更好的解决方案?
答案 0 :(得分:1)
如果您有路径我相信您的答案可以在How to find the amount of free storage (disk space) left on Android?中找到,请检查那里的代码示例。
答案 1 :(得分:1)
我已选择Fréderic Cox's回答,因为它是有效的解决方案。但是,重要的是还要在我们的代码库中发布我们如何处理它。
我代表一位同事问了这个问题。我只是代码审查了他的解决方案,这是代码中有关他如何处理它的相关评论:
第三方库正在使用getExternalFilesDir来确定位置 写信给。 getExternalFilesDir的返回值是" primary 外部存储"。与其名称相反,"主要外部存储" 表示内部存储(!),因为它指的是存储 不是操作系统本身或安装的应用程序的内部,但可以使用 要写的应用。它将与应用程序一起卸载。内部, 不是外在的如果您想知道,实际的外部存储, 像SD卡,被认为是"辅助外部存储" (如 反对"主要外部存储"在这里使用)。 https://stackoverflow.com/a/29404440
long availableMb = applicationContext.getExternalFilesDir(null).getUsableSpace() / (1024 * 1024);