HBuilderx打包h5的APP,解决获取相机权限问题

  • Post author:
  • Post category:其他


最近有一个H5项目需要打包成APP,通过HBuilderx中的原生云打包(具体过程百度一下很详细),项目中需要获取相机的权限,程序中是通过 navigator.myGetUserMedia调取相机的,但是一打包就不能实现,必须通过手动给权限才能成功。

最后各种找资料,得出能直接打开权限,但第一次进入还是不能用,只有退出重新进入APP才能调取。

于是就想着是不是在 进入程序的一瞬间直接获取权限,然后直接在重启APP,这样应该能平滑的打开相机权限并不影响用户体验。下面就是具体代码,这里是找的资料调取二维码的,但我们只要把相机的权限打开就好了,所以相机画面直接屏蔽掉。

document.addEventListener('plusready',function () { // 这里一定要加上  不然会报push 未定义
        plus.android.requestPermissions(['android.permission.CAMERA'], function(e){
        if(e.deniedAlways.length>0){    //权限被永久拒绝
            // 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启
            //alert('永久');
            document.addEventListener("plusready", onPlusReady, false);
            // 扩展API加载完毕,现在可以正常调用扩展API
            function onPlusReady() {
                // 创建扫码控件来调获取手机的相机权限
                barcode = plus.barcode.create('barcode', [plus.barcode.QR], {
                    top: '-9999', //改为-9999px隐藏该页面
                    left: '0',
                    width: '100%',
                    height: '500px',
                    position: 'static'
                });
                //plus.webview.currentWebview().append(barcode);;
                //barcode.start();开始扫码识别(我们把这句代码注释了,因为我们不需要扫描任何东西)
            }
            //上面打开权限后,这里直接重启APP
            plus.runtime.restart();
        }
        if(e.deniedPresent.length>0){   //权限被临时拒绝
            // 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限
            //alert('临时 ');
        }
        if(e.granted.length>0){ //权限被允许
            //调用依赖获取定位权限的代码
            //alert('允许!!! ');
            
        }
    }, function(e){
        alert('Request Permissions error:'+JSON.stringify(e));
    });
    },false);



版权声明:本文为weixin_42489436原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。