马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
记载关于H5在Android的webView中申请语音、相机等资源权限开发过程
1、申请权限的JavaScript端(Vue)
这里申请权限时不停走了catch异常,提示语音权限禁止获取。
- if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
- // 请求麦克风权限
- navigator.mediaDevices
- .getUserMedia({ audio: true })
- .then(function (stream) {
- console.log('录音权限已获取')
- })
- .catch(function (err) { // 用户拒绝或者发生错误
- console.log('无法获取录音权限:', err)
- })
- }
复制代码 2、Android端的 Webview授权(Kotlint)
这里使用AgentWeb做为Webview框架,可参考:github地址,gitee地址
- webViewAgentWeb = AgentWeb.with(this)
- .setAgentWebParent(webViewContainer, -1, LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT))
- .useDefaultIndicator(ContextCompat.getColor(this, R.color.light_blue), 3)
- .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
- .setMainFrameErrorView(R.layout.agentweb_error_page, -1)
- .setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.DISALLOW)
- .setWebChromeClient(object : WebChromeClient(){
- // H5授权检查
- override fun onPermissionRequest(request: PermissionRequest?) {
- try {
- if (request != null) {
- if( !request.resources.contains(PermissionRequest.RESOURCE_AUDIO_CAPTURE)) return
- if(allPermissionsGranted()){
- //允许H5申请资源权限
- request.grant(request.resources)
- //如果需要限制H5资源申请的权限类型,则使用For循环进行检查授权即可
- // for (r in request.resources){
- // if (r == PermissionRequest.RESOURCE_AUDIO_CAPTURE){
- // request.grant(arrayOf(PermissionRequest.RESOURCE_AUDIO_CAPTURE))
- // }
- // break
- // }
- } else {
- requestPermissions()
- }
- }
- }catch (e:Exception){
- Log.d("WebView", "onPermissionRequest / Exception: ${e} ")
- return
- }
- }
- })
- .interceptUnkownUrl()
- .createAgentWeb()
- .ready()
- .go(url)
复制代码 3、报错标题:假如H5端申请资源权限时 ,出现Android端不停报错如下:
- :java.lang.IllegalStateException: Either grant() or deny() has been already called.
复制代码 则说明在onPermissionRequest中使用了类继承方法导致的,注销掉 super.onPermissionRequest(request) 即可,如下:
- // super.onPermissionRequest(request) //调用父类(超类)中同名方法的一个实例 | 不使用这个,因为这里是继承onPermissionRequest,会导致无法再次调用grant进行授权的问题发生
复制代码 参考:Android : WebView中的摄像头错误(相机答应不工作)
的相干办理思路。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |