Android 9+下开发删除可见缓存应用的权限问题及方案咨询
可行方案解析
要在Android 9+上实现删除其他应用android/data/package_name/cache目录下的缓存,CCleaner这类应用主要依赖以下几种方式,你可以根据自身场景选择:
存储访问框架(SAF)手动授权
这是最合规的方案,核心是引导用户手动通过系统文件选择器授予应用访问目标cache目录的权限:- 调用SAF的
ACTION_OPEN_DOCUMENT_TREE意图,让用户导航到目标应用的cache目录 - 用户确认授权后,应用通过
DocumentFileAPI操作该目录下的文件,执行删除逻辑
缺点是需要用户手动操作,体验不够流畅,但完全符合Android权限规范,不会触发Play商店的审核风险。
- 调用SAF的
辅助功能(Accessibility Service)
辅助功能可以模拟用户的手动操作,比如自动打开系统文件管理器、定位到目标cache目录、执行删除动作。但需要用户主动开启应用的辅助权限,而且Google Play对这类权限的使用审核非常严格,如果你的应用仅以此功能为核心,很可能被判定为滥用权限而拒绝上架。设备所有者/配置文件所有者(仅企业场景)
如果是面向企业的应用,可以通过MDM(移动设备管理)机制成为设备所有者,获得访问所有应用私有目录的权限。但这个方案只适用于企业部署场景,普通消费级应用无法使用。
注意:MediaStore API无法访问这类非媒体型的缓存文件,此路径不可行。
内容的提问来源于stack exchange,提问作者nl_cuong
相关产品推荐
相关产品推荐

