uni-app 云打包 h5+拍照在android10以上系统无法唤起摄像头

uni-app 云打包 h5+拍照在android10以上系统无法唤起摄像头

操作步骤:

  • uniapp调用h5+ camera.captureImage云打包后android10以下能唤起摄像头,android10以上不能唤起摄像头

预期结果:

  • uniapp调用h5+ android10以上也能唤起摄像头

实际结果:

  • uniapp调用h5+ camera.captureImage云打包后android10以下能唤起摄像头,android10以上不能唤起摄像头

bug描述:

  • uniapp调用h5+ camera.captureImage云打包后android10以下能唤起摄像头,android10以上不能唤起摄像头

| 信息类别       | 内容                     |
|----------------|--------------------------|
| 产品分类       | uniapp/App               |
| PC开发环境     | Windows                  |
| PC操作系统版本 | windows10                |
| HBuilderX类型  | 正式                     |
| HBuilderX版本  | 2.8.8                    |
| 手机系统       | Android                  |
| 手机系统版本   | Android 10               |
| 手机厂商       | 华为                     |
| 手机机型       | 华为mate                 |
| 页面类型       | vue                      |
| 打包方式       | 云端                     |
| 项目创建方式   | HBuilderX                |

更多关于uni-app 云打包 h5+拍照在android10以上系统无法唤起摄像头的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

我也碰到了这个问题,华为nova7 pro点击了没效果

更多关于uni-app 云打包 h5+拍照在android10以上系统无法唤起摄像头的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是Android 10权限策略变更导致的兼容性问题。从Android 10开始,系统对摄像头权限的管理更加严格,需要在配置文件中明确声明相机权限。

解决方案:

  1. 在manifest.json中配置权限:
{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.CAMERA\"/>",
          "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
          "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>"
        ]
      }
    }
  }
}
  1. 运行时动态申请权限:
// 在调用摄像头前先检查权限
plus.android.requestPermissions(['android.permission.CAMERA'], function(e){
    if(e.deniedAlways.length > 0){
        // 权限被永久拒绝
        console.log('相机权限被拒绝');
    }else{
        // 调用摄像头
        plus.camera.getCamera().captureImage();
    }
}, function(e){
    console.log('申请权限失败');
});
回到顶部