Android 10适配详解:ScopedStorage与文件权限策略

0 下载量 97 浏览量 更新于2024-09-09 收藏 225KB PDF 举报
本文档是一篇关于Android 10适配攻略的总结,重点介绍了针对Android 10新特性进行应用程序开发所需的注意事项。文章开始强调了适配Android 10前,开发者需要将项目targetSdkVersion设置为29,这是升级到新版本的基本要求。 文章的核心内容围绕Android 10引入的ScopedStorage(分区存储)机制展开。在Android 10之前,应用通常需要请求存储权限才能读写文件,这导致了存储空间的混乱。为解决这个问题,Android 10通过区分内部存储(如getFilesDir()路径)和外部存储(getExternalStorageDirectory()路径)的行为,引入了新的规则: 1. 内部存储不再需要单独的权限,且卸载应用时会自动清理文件。然而,外部存储被划分为三个区域: - 特定目录:使用getExternalFilesDir()或getExternalCacheDir()获取,无需权限,卸载应用后会被清除。 - 媒体文件(如照片、视频、音频):通过MediaStore访问,需READ_EXTERNAL_STORAGE权限,且不适用ScopedStorage规则。 - 其他目录:使用Storage Access Framework (SAF)进行访问,此时即使拥有存储权限也可能无法直接读写。 为了适配Android 10,开发人员需要注意以下几点: - 在AndroidManifest.xml中添加android:requestLegacyExternalStorage="true",这是一种临时解决方案,但并不是长久之计,因为Google建议尽快移除对Legacy External Storage的支持。 - 了解并处理ScopedStorage带来的文件权限变化,可能需要重新设计数据存储策略,确保数据的安全性和管理性。 - 对MediaStore和SAF的正确使用,尤其是当涉及到媒体文件和跨应用访问时,需要正确申请和管理权限。 - 测试应用在Android 10设备上的行为,确保兼容性和用户体验。 这篇攻略对于正在或计划更新Android 10应用的开发者来说,提供了宝贵的指导,帮助他们理解和应对新版本带来的挑战,提升应用程序在Android 10环境下的表现和用户满意度。