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
打包方式 云端

Image Image

manifest.rar


更多关于uni-app 添加相机权限并通过云端打包后 安装App没有相应权限无法调用相机的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

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" 数组。

请按以下步骤检查和修改:

  1. 打开项目的 manifest.json 文件,切换到“源码视图”。
  2. 找到 "app-plus" 节点,在其下的 "distribute" -> "android" 节点中,添加或修改 "permissions" 数组。
  3. 正确的配置示例如下:
{
  "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.authorizeuni.getSetting 等API来检查并请求权限。

例如,在调用扫码前:

uni.authorize({
    scope: 'scope.camera',
    success() {
        // 用户已授权,开始扫码
        uni.scanCode({ ... });
    },
    fail() {
        // 用户拒绝,可在此提示
    }
});
回到顶部