uni-app小程序拉不起安卓相册 报错code:12 权限已给
uni-app小程序拉不起安卓相册 报错code:12 权限已给
操作步骤:
无
预期结果:
无
实际结果:
无
bug描述:
uniapp拉不起安卓相册,权限已给。如附件视频。
信息项 | 内容 |
---|---|
产品分类 | uni小程序SDK |
手机系统 | Android |
手机系统版本 | Android 13 |
手机厂商 | 华为 |
手机机型 | huaweimate60pro |
页面类型 | vue |
SDK版本号 | 4.24 |
App下载地址 | https://d.ynyapp.com |
2 回复
你提供的附件是个视频,需要提供一下可以复现问题的示例工程
在开发uni-app小程序时遇到无法拉起安卓相册并报错code:12
的问题,通常是由于权限配置或调用方法不当引起的。尽管你已经提到权限已给,但可能仍需要检查几个关键方面以确保一切配置正确。以下是一些常见的检查步骤和代码示例,帮助你解决该问题。
1. 检查manifest.json
权限配置
确保在manifest.json
文件中已经正确配置了相册权限。对于Android平台,你需要在mp-weixin
(或其他对应的小程序平台配置)下添加必要的权限声明,尽管uni-app通常会自动处理这些权限,但手动检查总是一个好习惯。
"mp-weixin": {
"appid": "your-app-id",
"setting": {
"requestDomain": ["your-domain.com"]
},
"permission": {
"scope.userInfo": {
"desc": "你的用户信息将用于小程序相册功能"
},
"scope.userLocation": {
"desc": "你的地理位置将用于小程序某些功能" // 根据需要添加
}
// 注意:相册权限通常不需要在这里特别声明,除非有特定需求
}
}
2. 使用uni.chooseImage API
确保你正确使用了uni.chooseImage
API。以下是一个基本的调用示例:
uni.chooseImage({
count: 9, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
console.log(res.tempFilePaths)
},
fail: function (err) {
console.error('chooseImage fail:', err);
if (err.code === 12) {
uni.showToast({
title: '相册权限被拒绝',
icon: 'none'
});
}
}
});
3. 动态权限请求(针对H5+或原生App封装)
如果你的应用是封装成原生App,而非纯粹的小程序,你可能需要在运行时动态请求权限。虽然小程序环境下通常不需要这样做,但如果是基于5+ App(HBuilderX创建的App),你可能需要用到以下代码:
plus.android.requestPermissions(['android.permission.READ_EXTERNAL_STORAGE'], function(event) {
if (event.deniedAlways.length > 0) {
console.error('用户永久拒绝了权限请求');
} else if (event.denied.length > 0) {
console.error('用户拒绝了权限请求');
} else {
console.log('权限请求成功');
// 继续调用chooseImage
}
});
确保在调用相册功能之前,用户已经授予了必要的权限。如果问题仍然存在,建议检查Android设备的系统设置,确认应用是否已被授予存储访问权限,或者在设备的开发者选项中查看是否有影响权限管理的设置。