uni-app 添加相机权限并通过云端打包后 安装App没有相应权限无法调用相机
uni-app 添加相机权限并通过云端打包后 安装App没有相应权限无法调用相机
操作步骤:
在manifest.json文件的图形界面-权限配置-Android权限配置里勾选相机所需的三项权限,之后通过云端打包好的安装包安装到手机上。
预期结果:
安装完成后权限列表里看到相机权限,并且App内调用扫描二维码能正常调起相机。
实际结果:
安装完成后权限列表里看不到相机权限,并且App内调用扫描二维码时会提示”未获取相机权限“。
bug描述:
已添加到manifest.json文件里的权限:
"google" : {
"permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>"
]
}
实际安装后的App权限列表如附件一所示,没有相机权限。 附件二是另一款有相机权限App的权限列表。 附件三是App的manifest.json文件,打包包名是io.dcloud.shopbest。
| 信息类型 | 内容 |
|---|---|
| 产品分类 | HTML5+ |
| HBuilderX版本号 | 3.1.22 |
| 手机系统 | Android |
| 手机系统版本号 | Android 11 |
| 手机厂商 | 一加 |
| 手机机型 | 9R |
| 打包方式 | 云端 |

更多关于uni-app 添加相机权限并通过云端打包后 安装App没有相应权限无法调用相机的实战教程也可以访问 https://www.itying.com/category-93-b0.html
appid发下我们查下你的打包记录
更多关于uni-app 添加相机权限并通过云端打包后 安装App没有相应权限无法调用相机的实战教程也可以访问 https://www.itying.com/category-93-b0.html
appid是shopbest
回复 阿卢说他遇: 检测是有相机权限的 安装测试二维码功能可以正常使用
回复 DCloud_Android_ST: 刚重新试了一下确实正常了,应该是我手机的问题。
我的三个配置都加了还是不弹出获取相机权限
根据您提供的信息,问题可能出在权限配置的方式上。您在 manifest.json 中配置的权限位于 "google" 节点下,这通常用于配置 Google Play 商店的特定设置,而不是 Android 应用本身的通用权限。
正确的配置位置应该是 "app-plus" -> "distribute" -> "android" 节点下的 "permissions" 数组。
请按以下步骤检查和修改:
- 打开项目的
manifest.json文件,切换到“源码视图”。 - 找到
"app-plus"节点,在其下的"distribute" -> "android"节点中,添加或修改"permissions"数组。 - 正确的配置示例如下:
{
"app-plus": {
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>"
]
},
// ... 其他配置
}
},
// ... 其他配置
}
关键点说明:
<uses-permission android:name=\"android.permission.CAMERA\"/>:这是申请相机运行时权限所必需的声明。没有它,系统不会在安装时或运行时向用户请求相机权限。<uses-feature ... />:这两项是声明应用需要相机和自动对焦功能。这主要用于 Google Play 商店进行设备过滤,确保没有相机的设备不会看到或安装此应用。它们本身不负责权限申请。
修改后,请务必重新提交到云端进行打包。
额外建议(针对Android 6.0及以上系统):
即使正确声明了权限,在Android 6.0 (API level 23) 及以上版本中,CAMERA 属于危险权限,还需要在运行时动态向用户申请。您需要在调用相机(如扫码)的代码逻辑中,使用 uni.authorize 或 uni.getSetting 等API来检查并请求权限。
例如,在调用扫码前:
uni.authorize({
scope: 'scope.camera',
success() {
// 用户已授权,开始扫码
uni.scanCode({ ... });
},
fail() {
// 用户拒绝,可在此提示
}
});

