Android 13下在外部存储Documents中创建应用专属文件夹的正确方法
在Android 13的Documents目录创建应用专属文件夹的正确姿势
核心逻辑
要满足用户手动复制文件、完全访问权限的需求,不能用内部存储,也不能在外部根目录建文件夹,得靠存储访问框架(SAF)——这是Android 13推荐的合规方案,通过用户授权获取Documents目录下文件夹的访问权。
关键方法与步骤
- 唤起文件选择器创建/选择文件夹:用
Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)启动系统文件选择器,引导用户在Documents目录下创建你的应用专属文件夹(比如"MyApp"),或者直接选择已有的目标文件夹。 - 获取持久化权限:用户选定文件夹后,通过
getContentResolver().takePersistableUriPermission()获取持久化的URI权限,这样应用重启后不用再让用户授权,依然能访问该文件夹。 - 文件读写操作:后续处理二进制、文本、XML文件时,用
ContentResolver的openOutputStream()、openInputStream()等方法,配合DocumentsContract相关API完成创建、读取、修改、删除操作。
重要提示
- Android 13不需要申请
READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE权限,SAF通过用户主动授权获取访问权,符合系统安全规范。 - 必须由用户手动操作选择/创建文件夹,不能静默创建,这是系统强制要求,确保用户明确知晓并授权应用访问该目录。
内容的提问来源于stack exchange,提问作者Robert Angermayr
相关产品推荐
相关产品推荐

