Android Studio如何自动弹出外部存储全文件写入权限授权窗口
Android 全量外部存储访问权限配置方案
你当前配置的WRITE_EXTERNAL_STORAGE权限在Android 11(API 级别30)及以上系统受分区存储规则限制,授权后仅能访问媒体类文件,无法获取任意路径的.txt等非媒体文件写入权限,且系统不会自动触发全量存储访问的授权流程,需要按以下步骤配置:
1. 修改Manifest权限声明
保留低版本兼容权限,新增Android 11+版本的全量存储权限声明,替换原有单条权限配置:
<!-- Android 10及以下版本存储读写权限,高版本不再生效 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" tools:ignore="ScopedStorage" /> <!-- Android 11及以上全量文件访问权限 --> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
2. 代码中主动触发授权流程
MANAGE_EXTERNAL_STORAGE属于特殊权限,无法像普通危险权限一样调用requestPermissions直接弹出授权窗,需要先校验权限状态,未授权时跳转系统专属授权页引导用户开启:
// 权限请求码可自行定义 private const val REQ_ALL_FILE_ACCESS = 1001 private const val REQ_WRITE_STORAGE = 1002 private fun checkStoragePermission() { when { Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> { // 校验是否已获得全量文件访问权限 if (!Environment.isExternalStorageManager()) { // 跳转系统全量存储授权页 val authIntent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).apply { data = Uri.fromParts("package", packageName, null) } startActivityForResult(authIntent, REQ_ALL_FILE_ACCESS) } else { // 已获得权限,执行txt文件写入逻辑 writeTxtFileToExternal() } } else -> { // Android 10及以下走普通运行时权限申请流程 if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQ_WRITE_STORAGE ) } else { writeTxtFileToExternal() } } } } override fun onResume() { super.onResume() // 从授权页返回后重新校验权限状态 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && Environment.isExternalStorageManager()) { writeTxtFileToExternal() } }
注意事项
- Android系统没有提供配置Manifest即可自动弹出全量存储授权窗的能力,跳转系统设置授权页是官方规定的唯一合规流程,不存在其他绕过方案。
- 全量文件访问权限属于高敏感权限,若应用需要上架主流应用市场,需确保使用场景符合审核要求:仅文件管理、设备备份、杀毒类等确实需要访问全量存储的应用可正常过审,普通功能类应用申请该权限大概率会被驳回。
- 如果不需要将txt文件存储到外部存储的任意公共路径,优先选择存储访问框架(SAF)、应用专属外部存储目录、MediaStore方案实现文件写入,无需申请高敏感权限,兼容性和审核通过率更高。
内容的提问来源于stack exchange,提问作者Bogdan Madzhuga
相关产品推荐
相关产品推荐

