2***@qq.com
2***@qq.com
  • 发布:2016-08-12 15:18
  • 更新:2016-09-10 18:35
  • 阅读:6085

请问,app被用户禁止拍照和录音权限之后,拍照和录音事件应该怎么处理?

分类:HTML5+

app被用户禁止拍照和录音权限之后。
拍照:点击的时候没有任何反应。代码出现错误:Uncaught SyntaxError: Unexpected identifier。
录音:第一次点击录音的时候,进入录音操作错误回调函数。弹出“录音失败”提示。 此时页面还正常,其他功能都正常实现。但是再次点击录音之后,整个页面就卡死了,页面动不了,几秒钟之后app就被强行退出了。
用的是红米note2进行的测试。
请问:遇到这种情况该如何处理,如何解决app被用户禁止拍照、录音权限之后的拍照录音点击事件。

mui.plusReady(function(){  
    //添加照片  
   document.getElementById("a1").addEventListener("tap",function(){  
      plus.nativeUI.actionSheet({cancel:"取消",buttons:[{title:"相册选择"},{title:"拍照选择"}]},function(e){   
         if(e.index==1){  
            //相册选择  
         };  
         if(e.index==2){  
            //拍照选择  
            var camera_object=plus.camera.getCamera();  
            camera_object.captureImage(  
               function(path){  
                  //成功回调  
                  alert(path);  
               },   
               function(err){  
                  //失败回调  
                  alert("拍照失败");  
               },  
               {filename:"_doc/camera/"}  
            );  
         }  
      });  
   });  

    //录音  
   var r = plus.audio.getRecorder();   
   document.getElementById("a2").addEventListener("tap",function(){  
    if ( r == null ) {  
        alert( "设备尚未准备好!" );  
        return false;   
      }   
    r.record({  
      filename:"_doc/audio/",  
    },   
    function(){  
        alert("录音成功");  
        return false;  
    },  
    function(er){  
        alert("录音失败");  
        return false;  
    }  
    );  
   })  

   //停止录音   
   document.getElementById("a3").addEventListener("tap",function(){  
    r.stop();  
   })  

});   
2016-08-12 15:18 负责人:无 分享
已邀请:
赵梦欢

赵梦欢 - 专注前端,乐于分享!

检查运行环境的权限

另外android权限判断在6.0下没法直接判断然后通过代码设置,建议还是通过异常错误判断然后提示一下用户去手动修改权限。

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8">  
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
    <title></title>  
    <link href="css/mui.min.css" rel="stylesheet"/>  
</head>  
<body>  
    <div class="mui-content mui-content-padded">  
        <button id="btn1" type="button" class="mui-btn mui-btn-blue mui-btn-block">判断权限是否存在</button>  
        <button id="btn2" type="button" class="mui-btn mui-btn-blue mui-btn-block">打开权限设置</button>  
    </div>  

    <script src="js/mui.min.js"></script>  
    <script type="text/javascript">  
        var r = null;  
        mui.plusReady(function () {  

            document.querySelector('#btn1').addEventListener('tap',function () {  
                r = plus.audio.getRecorder();  
                r.record({  
                    filename:"_doc/audio/"  
                }, function () {  
                    mui.toast("Audio record success!");  
                }, function (e) {  
                    console.log(JSON.stringify(e));  
                    if(e.code === 3){  
                        mui.toast("Audio无权限,请先去设置!");  
                        openSetting();  
                    }     
                });  
            })  

            /*打开权限设置页面*/  
            function openSetting () {  
                // 注意修改包名  
                var packageName = "io.dcloud.HBuilder";  
                var main = plus.android.runtimeMainActivity();  
                var Uri = plus.android.importClass("android.net.Uri");  
                var Settings = plus.android.importClass("android.provider.Settings");  
                var packageURI = Uri.parse("package:" + packageName);  
                var intent = plus.android.newObject("android.content.Intent", Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);  
                main.startActivity(intent);  
            }  

            // 打开权限设置  
            document.querySelector('#btn2').addEventListener('tap',function () {  
                openSetting();  
            })  
        })  
    </script>  
</body>  
</html>
  • 2***@qq.com (作者)

    安卓系统获取不了权限吧,里面有说明:Android - ALL (不支持): 暂不支持,返回“unsupported”。我测试的时候没有返回unsupported,而是返回null,录音、拍照、定位等返回的都为null。

    2016-08-13 08:39

  • shawnan

    这个只是检测你有没有对应用配置某项权限,而不是检测目前应用是否真的具有某项权限吧

    2016-09-05 09:53

  • 1***@qq.com

    @shawnan.chen@gmail.com:是这样的吗?那我怎么判断有没有禁用某个权限呢

    2016-09-10 17:21

  • 赵梦欢

    回复 1***@qq.com: 建议通过异常然后提示用户手动修改。

    2016-09-10 18:36

该问题目前已经被锁定, 无法添加新回复