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

Android 13(SDK33)点击按钮不弹出READ_MEDIA_VIDEO权限弹窗求助

Android 13(SDK33)下READ_MEDIA_VIDEO权限弹窗不显示的解决方案

问题根源

代码里的版本判断顺序错了。Build.VERSION_CODES.M对应API23,Build.VERSION_CODES.TIRAMISU对应API33,由于API33也满足>=23的条件,所以点击按钮时会直接进入第一个分支检查READ_EXTERNAL_STORAGE权限,完全不会执行到针对SDK33的READ_MEDIA_VIDEO权限请求逻辑,自然弹不出对应的权限弹窗。

修正后的点击事件代码

binding.imageView10.setOnClickListener {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        // 处理SDK33及以上的READ_MEDIA_VIDEO权限
        if (ContextCompat.checkSelfPermission(this, READ_MEDIA_VIDEO) != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, READ_MEDIA_VIDEO)) {
                Toast.makeText(this@VideosActivity, "需要权限以访问视频", Toast.LENGTH_LONG).show()
            } else {
                ActivityCompat.requestPermissions(
                    this,
                    arrayOf(READ_MEDIA_VIDEO),
                    GALLERY_REQUEST_CODE
                )
            }
        } else {
            videoPickDialog()
        }
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        // 处理SDK23到32的READ_EXTERNAL_STORAGE权限
        if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.READ_EXTERNAL_STORAGE)) {
                Toast.makeText(this@VideosActivity, "需要权限以访问视频", Toast.LENGTH_LONG).show()
            } else {
                ActivityCompat.requestPermissions(
                    this,
                    arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE),
                    GALLERY_REQUEST_CODE
                )
            }
        } else {
            videoPickDialog()
        }
    } else {
        // SDK21-22无需动态申请权限,直接打开选择弹窗
        videoPickDialog()
    }
}

关于Manifest配置

你当前的Manifest权限声明是正确的,无需修改:

  • READ_MEDIA_VIDEO、READ_MEDIA_IMAGES无版本限制,适配SDK33+
  • READ_EXTERNAL_STORAGE限制在SDK32及以下,WRITE_EXTERNAL_STORAGE限制在SDK28及以下,符合Android权限适配规范

内容的提问来源于stack exchange,提问作者terlan abaszade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:20:40