uni-app uni.chooseImage 使用系统相册提示没权限,Google Play申请被拒

uni-app uni.chooseImage 使用系统相册提示没权限,Google Play申请被拒

uni-app照片选择器

按照要求修改

uni.chooseImage({
	count: 1, //默认9  
	sourceType: ["album"],
	// #ifdef APP-ANDROID  
	albumMode: "system",  
	// #endif  
	sizeType: ["compressed"]
})

manifest.json去除
"<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />",
"<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />"

系统返回错误提示

{
	"errMsg": "chooseImage:fail No Permission",
	"code": 12
}

uni-app照片选择器 https://doc.dcloud.net.cn/uni-app-x/api/choose-image.html#相册选择的2种方式
按照文档意思,custom方式设置为system就可以,并且不需要额外申请权限。
实际测下来,使用后,会直接提示无权限。如果手动去设置中把图片访问权限打开才能正常使用。

图片


更多关于uni-app uni.chooseImage 使用系统相册提示没权限,Google Play申请被拒的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE和READ_MEDIA_IMAGES这三个权限都加了吗

更多关于uni-app uni.chooseImage 使用系统相册提示没权限,Google Play申请被拒的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我们发现您的应用不符合使用 READ_MEDIA_IMAGES/READ_MEDIA_VIDEO 权限的相关要求。

您的应用只需访问设备上的媒体文件一次,或者很少访问此类文件。只有在核心使用情形下需要持续访问设备共享存储空间中的照片和视频文件的应用才能使用照片和视频权限。如需详细了解相关要求,请参阅 Google Play 的“照片和视频权限”政策。

回复 s***@163.com: 谷歌那边就不清楚怎么处理了,没弄过

回复 蔡cai: 好吧

回复 s***@163.com: 看看有没有遇到过的大佬

为啥要去掉READ_MEDIA_IMAGES权限

我们发现您的应用不符合使用 READ_MEDIA_IMAGES/READ_MEDIA_VIDEO 权限的相关要求。

您的应用只需访问设备上的媒体文件一次,或者很少访问此类文件。只有在核心使用情形下需要持续访问设备共享存储空间中的照片和视频文件的应用才能使用照片和视频权限。如需详细了解相关要求,请参阅 Google Play 的“照片和视频权限”政策。

请问你这边解决了吗

印象中可以用uni.chooseMedia处理,你社区搜搜看

这是一个典型的Android 14权限适配问题。在Android 14(API level 34)及以上版本,Google Play要求应用使用照片选择器(Photo Picker)替代传统的存储权限。

从你的代码和错误信息分析:

  1. albumMode: "system" 确实应该调用系统照片选择器,这不需要READ_MEDIA_IMAGES权限
  2. 但错误代码12表明权限检查失败

可能的原因和解决方案:

检查Android目标版本: 确保manifest.json中Android的targetSdkVersion设置为34或以上,否则系统可能仍使用旧的权限模型。

权限配置确认: 虽然你移除了READ_MEDIA_IMAGES权限,但需要确认是否还有其他存储权限残留。检查manifest中是否包含:

  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.WRITE_EXTERNAL_STORAGE

这些权限在Android 14上已废弃,应该完全移除。

运行时权限处理: 即使使用系统照片选择器,在某些Android版本上可能仍需要基本的存储权限。建议在调用前添加权限检查:

// #ifdef APP-PLUS
const hasPermission = await checkAndroidPermission()
if(!hasPermission) return
// #endif

uni.chooseImage({
    count: 1,
    sourceType: ["album"],
    // #ifdef APP-ANDROID  
    albumMode: "system",  
    // #endif  
    sizeType: ["compressed"]
})
回到顶部