Android检查应用启动时存储空间是否不足

5
我认为我可以在广播接收器中使用Intent.ACTION_DEVICE_STORAGE_LOW来通知我设备存储空间不足。这里有详细解释:链接
我知道我可以在这里找到用户可用空间的大小。
然而,如果可能的话,我想避免设置什么是足够/不足够的空间边界。操作系统会在存储空间不足时向用户发送通知。
问题:是否有办法在启动时仅在应用程序内显示错误消息,如果操作系统认为可用空间不足?

监听 ACTION_DEVICE_STORAGE_LOW 广播?“这是一个受保护的意图,只能由系统发送。”但它将会并且应该被设备触发。 - shkschneider
我希望的解决方案是在启动时进行检查,而不是在应用程序的任何时刻进行检查。广播的问题在于它可能随时返回。我不想要这个的原因是,如果用户正在做某些事情,我不希望这个干扰并破坏他们的用户体验。 - Jake Graham Arnold
如果我无法进行检查,那么备选方案就是在启动时自行进行检查...但我不确定有多少可用空间算作“太低”,所以我希望能让操作系统为我决定。 - Jake Graham Arnold
然后,您只需要捕获“BOOT_COMPLETED”广播并运行您的检查代码。 “低存储”默认值为10%。 - shkschneider
1个回答

12

根据谷歌提供的相关示例代码,您可以采取以下方法:

IntentFilter lowstorageFilter = new IntentFilter(Intent.ACTION_DEVICE_STORAGE_LOW);
boolean hasLowStorage = registerReceiver(null, lowstorageFilter) != null;

换句话说,操作系统中运行着一个名为 DeviceStorageMonitorService 的服务,用于检测存储空间不足的情况。一旦检测到此类情况,该服务会发送一个粘性广播,供后续任何活动或服务进行检查。在本例中,他们注册了一个空接收器来测试是否已发送粘性广播。

2
现在在API级别26中已经被弃用。 - Gira
我将尝试使用 if (storageDir.getUsableSpace() * 100 / storageDir.getTotalSpace() <= 10) 来检查是否有足够的空间进行写入。 - Phlip
这是我的答案,即使它已被弃用,它仍然可以工作。https://dev59.com/rKbja4cB1Zd3GeqPlsk1#69727078 - Farido mastr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接