Android如何无需MANAGE_EXTERNAL_STORAGE权限创建用户可访问应用文件夹?
替代MANAGE_EXTERNAL_STORAGE权限的文本文件处理方案
方案1:使用系统文件选择器(ACTION_OPEN_DOCUMENT)
这是Android官方推荐的精准获取用户指定文件的方式,无需申请宽泛的存储权限,完全由用户主动选择要授权的文件,权限范围严格匹配需求。
具体实现步骤:
- 启动系统文件选择器并指定文本文件类型:
// 采用AndroidX推荐的ActivityResultContracts方式 val openDocumentLauncher = registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri -> uri?.let { // 读取选中的文本文件内容 contentResolver.openInputStream(it)?.use { inputStream -> val textContent = inputStream.bufferedReader().readText() // 在这里处理文本内容 } } } // 触发文件选择器 openDocumentLauncher.launch(arrayOf("text/plain")) - 通过
ContentResolver读取文件内容,无需直接操作文件路径,安全合规。 - 若需要长期访问该文件,可调用
takePersistableUriPermission获取持久化权限,避免应用重启后无法访问。
方案2:Android 13+专属媒体权限(限特定场景)
如果你的应用仅处理下载目录、文档目录下的文本文件,在Android 13及以上版本可申请READ_MEDIA_IMAGES/READ_MEDIA_VIDEO/READ_MEDIA_AUDIO权限,但这类权限仅覆盖媒体类文件,纯文本文件仍优先推荐方案1。
方案3:应用内部存储(补充选项)
引导用户通过文件管理器将文本文件复制到你的应用专属内部存储目录(getFilesDir()或getCacheDir()),但该方式需要用户手动操作,体验流畅度不如方案1,仅作为场景受限情况下的补充方案。
内容的提问来源于stack exchange,提问作者OrdinaryHuman
相关产品推荐
相关产品推荐

