uni-app uni.chooseImage 权限bug 点了允许相册权限 实际上却是禁止了相册权限
uni-app uni.chooseImage 权限bug 点了允许相册权限 实际上却是禁止了相册权限
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 15.5 | HBuilderX |
# 操作步骤:
uni.chooseImage
# 预期结果:
正确权限
# 实际结果:
错误权限
# bug描述:
uni.chooseImage 选择照片,首次会弹访问相册权限的弹窗,点了允许,但实际上变成了禁止。然后,控制台会报:
已获取的权限:android.permission.READ_MEDIA_IMAGES at uni_modules/x-perm-apply-instr/js_sdk/permission.js
Unhandled promise rejectionTypeError: Cannot read property '0' of undefined
在红米K80,vivo手机上,都是一样的情况。
更多关于uni-app uni.chooseImage 权限bug 点了允许相册权限 实际上却是禁止了相册权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app uni.chooseImage 权限bug 点了允许相册权限 实际上却是禁止了相册权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的Android权限适配问题。在Android 13及以上版本中,图片权限从READ_EXTERNAL_STORAGE变更为READ_MEDIA_IMAGES,而部分设备厂商在权限处理上存在差异。
问题分析:
- 权限弹窗显示与实际授权结果不一致,说明系统权限回调处理异常
Cannot read property '0' of undefined错误表明权限请求返回的数据结构不符合预期- 红米、vivo等设备出现相同问题,说明这是Android新权限机制的兼容性问题
解决方案:
- 检查manifest.json中是否配置了新的权限声明:
{
"permissions": {
"android": [
"android.permission.READ_MEDIA_IMAGES"
]
}
}
- 使用x-permission模块进行权限检查和处理:
// 在调用chooseImage前先检查权限
const permission = uni.requireNativePlugin('x-permission')
permission.requestPermissions(['android.permission.READ_MEDIA_IMAGES'], (result) => {
if (result.code === 0) {
uni.chooseImage({
count: 1,
success: (res) => {
console.log(res.tempFilePaths)
}
})
}
})

