检查Android应用程序可用磁盘空间的正确方法?

时间:2016-10-21 07:02:02

标签: android

我无法控制的第三方库将文件保存在:

/storage/emulated/0/Android/data/[packagename]/files

我知道检查磁盘上可用于内部和外部存储的存储的不同方法:Android get free size of internal/external memory。检查上述路径可用存储的正确方法是什么?

内部,外部或某种组合,取决于所使用的设备及其存储类型。 IE浏览器。在此检查中应该考虑adoptable storage吗?

或者使用粘性广播Intent.ACTION_DEVICE_STORAGE_LOW更好的解决方案?

2 个答案:

答案 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);