You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调用SD卡直接访问权限请求对话框?

如何调用直接访问SD卡的权限对话框

你提到的这个直接访问权限对话框,对应的是Android 11(API 30)及以上系统引入的**「所有文件访问权限」**(权限标识为MANAGE_EXTERNAL_STORAGE),它能让应用绕过Storage Access Framework(SAF)直接访问外部存储的所有文件。不过要注意,Google Play对这个权限的审核非常严格,只有文件管理器、备份工具、反病毒软件这类有明确需求的应用才允许使用,普通应用优先建议用SAF来操作文件。

下面是具体的实现步骤:

1. 在Manifest中声明权限

首先需要在AndroidManifest.xml里添加权限声明,同时兼容低版本系统的存储权限:

<!-- Android 11+ 所需的全文件访问权限 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
    android:minSdkVersion="30" />

<!-- Android 10及以下的读写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="29" />

2. 检查权限状态

在代码里先判断是否已经获得了这个权限,Android提供了Environment.isExternalStorageManager()方法来快速校验:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    val hasPermission = Environment.isExternalStorageManager()
    // 根据权限状态决定是否发起请求
}

3. 唤起权限请求对话框

如果还没获得权限,就需要启动系统设置的特定页面,也就是你截图里的那个对话框所在的界面。用以下代码实现:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    if (!Environment.isExternalStorageManager()) {
        // 构建跳转到应用全文件权限设置的Intent
        val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
        // 指定当前应用的包名,直接定位到本应用的权限设置页
        val uri = Uri.fromParts("package", packageName, null)
        intent.data = uri
        // 启动页面,用户就能看到你截图里的权限请求对话框了
        startActivity(intent)
    }
} else {
    // 处理Android 10及以下的读写权限请求逻辑
    ActivityCompat.requestPermissions(
        this,
        arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE),
        REQUEST_CODE_STORAGE // 自定义请求码,用于后续权限回调处理
    )
}

额外注意事项

  • 即使拿到了MANAGE_EXTERNAL_STORAGE权限,在Android 13(API 33)及以上系统中,针对媒体文件(图片、视频、音频)还有更细化的权限(比如READ_MEDIA_IMAGES),如果只是操作媒体文件,优先用这些细化权限更合规。
  • 提交到Google Play的应用,必须在权限申请说明里明确阐述为什么需要全文件访问权限,否则会被拒绝上架。

内容的提问来源于stack exchange,提问作者Jordy Mendoza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:49:43