收藏
回答

web-view,引入jweixin-1.6.0.js, 无法调用相机

在小程序web-view,引入jweixin-1.6.0.JS后,在纯鸿蒙情况下,无法拍照。提示:chooselimage:permission denied。两个不同型号的纯鸿蒙,都是这样。其他非纯鸿蒙手机,不存在这个问题。

回答关注问题邀请回答
收藏

2 个回答

  • 微盟
    微盟
    02-24

    在 web-view 中引入 jweixin-1.6.0.js 却无法调用相机,可能是由多种原因导致的,以下是一些常见的排查和解决方法:


    权限问题:

    微信公众号权限:确保你的微信公众号已获得调用相机的权限。对于微信网页开发,需要在微信公众号后台进行相应的权限配置,如在 “接口权限” 中查看是否已获得 “拍照、上传” 等相关权限。

    页面权限请求:在网页代码中,确保正确请求了相机权限。在使用微信 JS-SDK 调用相机功能前,需要先通过 wx.config 配置接口注入权限验证配置,并确保配置中的 jsApiList 包含了与相机相关的接口,如 chooseImage(用于选择图片,可调用相机拍照)。例如:


    javascript

    wx.config({

        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

        appId: '', // 必填,公众号的唯一标识

        timestamp: , // 必填,生成签名的时间戳

        nonceStr: '', // 必填,生成签名的随机串

        signature: '',// 必填,签名

        jsApiList: ['chooseImage'] // 必填,需要使用的JS接口列表

    });


    JS-SDK 配置错误:

    签名计算错误:wx.config 中的 signature 计算必须准确。签名的计算涉及到 appId、timestamp、nonceStr 以及网页的 url 等信息,需要按照微信官方提供的签名算法进行计算。如果签名计算错误,wx.config 会失败,导致无法调用相机等接口。

    URL 问题:确保 wx.config 中传入的 url 是当前网页的完整 URL(包括 http 或 https 协议头),并且与微信公众号后台配置的网页授权域名一致。

    web-view 相关问题:

    web-view 层级问题:在某些情况下,web-view 可能会被其他元素遮挡,导致相机无法正常弹出或显示。检查页面布局,确保 web-view 没有被其他元素覆盖。

    web-view 与小程序的通信问题:如果是在小程序的 web-view 中使用微信 JS-SDK,需要注意 web-view 与小程序之间的通信。确保 web-view 所在的小程序页面已经正确配置了 web-view 的 src 属性,并且与引入 jweixin-1.6.0.js 的网页对应。

    浏览器兼容性问题:

    虽然微信 JS-SDK 主要是为微信内置浏览器设计的,但在某些情况下,也可能存在浏览器兼容性问题。可以尝试在不同的设备和微信版本上进行测试,查看是否是特定设备或版本导致的问题。

    代码逻辑错误:

    检查调用相机的代码逻辑是否正确。例如,在调用 wx.chooseImage 等接口时,是否正确处理了接口的回调函数。以下是一个简单的调用 chooseImage 的示例:


    javascript

    wx.ready(function () {

        wx.chooseImage({

            count: 1, // 默认9

            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有

            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

            success: function (res) {

                var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片

            }

        });

    });


    通过以上步骤逐一排查,应该能够找到并解决在 web-view 中引入 jweixin-1.6.0.js 后无法调用相机的问题。

    02-24
    有用
    回复 1
  • 那一抹微笑😊穿透阳光
    那一抹微笑😊穿透阳光
    02-24

    没权限得嘛,是没有提示是否同意,还是提示得时候选择了不同意哦

    02-24
    有用
    回复 2
    • AIIT与苗木直达
      AIIT与苗木直达
      02-24
      这个权限是没有弹提示的,其它手机,一直可以用。鸿蒙不可以用(小程序在,设置里面,有获取摄像头和相册的权限,鸿蒙里面显示是获取了的。小程序 vue写法是可以拍照的, jweixin-1.6.0.js提示错误:chooselimage:permission denied)
      02-24
      回复
    • 那一抹微笑😊穿透阳光
      那一抹微笑😊穿透阳光
      02-24回复AIIT与苗木直达
      鸿蒙系统的jweixin.js好像还在完善当中,有一些功能还不支持
      02-24
      回复
登录 后发表内容