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

如何将带MANAGE_EXTERNAL_STORAGE权限的Android 11应用发布到Play Store

Android 11+图片写入应用Play Store上架被拒解决方案

首先你当前的配置本身存在逻辑错误:minSdk=30代表应用最低兼容Android 11,compileSdk=29代表基于Android 10的SDK编译,编译版本低于最低支持版本属于非法配置,被拒是必然结果,先修正该配置,将compileSdk和targetSdk同步升级到33及以上(符合Play Store当前的targetSdk版本要求)。
后续按照以下方案调整即可合规上架:

  • 移除敏感权限申请
    完全删除AndroidManifest.xml中MANAGE_EXTERNAL_STORAGE权限的声明,同时移除所有请求该权限的代码逻辑。该权限仅面向文件管理器、备份工具等必须访问全量存储的应用开放审核,普通图片写入类应用无资格申请,也不需要申请。
  • 改用MediaStore API实现图片写入
    你的应用仅需要写入图片到公共存储目录,用官方提供的MediaStore API即可实现,Android 11及以上版本无需申请任何存储权限:
    // Kotlin 示例:写入图片到Pictures目录下的自定义文件夹
    val imageValues = ContentValues().apply {
        put(MediaStore.Images.Media.DISPLAY_NAME, "sample_${System.currentTimeMillis()}.jpg")
        put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
        put(MediaStore.Images.Media.RELATIVE_PATH, "${Environment.DIRECTORY_PICTURES}/你的应用专属文件夹名")
        put(MediaStore.Images.Media.IS_PENDING, 1)
    }
    
    val imageUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageValues)
    imageUri?.let { uri ->
        contentResolver.openOutputStream(uri).use { outputStream ->
            // 此处将你的Bitmap写入输出流
            targetBitmap.compress(Bitmap.CompressFormat.JPEG, 95, outputStream)
        }
        // 写入完成后更新状态,对用户可见
        imageValues.clear()
        imageValues.put(MediaStore.Images.Media.IS_PENDING, 0)
        contentResolver.update(uri, imageValues, null, null)
    }
    
    Java实现逻辑与上述代码完全一致,仅语法存在差异。
  • 特殊场景适配
    如果你需要用户自定义保存路径,不要申请敏感权限,调用系统存储访问框架(SAF)的ACTION_OPEN_DOCUMENT_TREE Intent唤起系统文件夹选择器,由用户主动授权目标文件夹的访问权限,该方式完全符合Play Store政策要求,无需额外权限申请。
  • 提交前自查
    提交前进入Play Console的「应用内容」板块,确认敏感权限声明列表中没有MANAGE_EXTERNAL_STORAGE,所有已申报权限都对应明确的应用功能,功能描述与实际应用行为完全匹配。

内容的提问来源于stack exchange,提问作者Falah Arby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:09:02