当前位置:首页 » 《随便一记》 » 正文

H5在Android在Webview中申请语音、相机等资源权限

1 人参与  2024年12月12日 12:01  分类 : 《随便一记》  评论

点击全文阅读


记录关于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中的摄像头错误(相机允许不工作)
的相关解决思路。


点击全文阅读


本文链接:http://zhangshiyu.com/post/200033.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 热文推荐很快,他们都自由了:全文+番外(叶浅秋陆凌川)书荒必看列表
  • (新欢闹上门,明小姐消失后司总悔疯了):+后续+番外司锦修明悦后续全本浏览阅读
  • 夕景昨日无心怜冷秋语洛斯言后续(冷秋语洛斯言)全文在线下载在线+纯净版结局
  • 落青梅,佛前几度相思泪:+后续***(宋佳音陆景琛)终章阅读无广告
  • 很快,他们都自由了:结局+番外新上热文(叶浅秋陆凌川)最近章节列表
  • 养妹被豪门认回后做成女体盛,缅北杀神的我杀疯了完结全文_妹妹苏月月宾客优质全文_小说后续在线阅读_无删减免费完结_
  • 京圈太子爷扫黄被抓,我改嫁八块腹肌风流俏奶爸列表_京圈太子爷扫黄被抓,我改嫁八块腹肌风流俏奶爸(许知意顾云夕)
  • (书荒必看)夏晚歌陆秋震惊!玄学大佬被读心了:+后续热血十足
  • 老公逼我给女大献血补身后,他悔疯了前言+后续(沈佳音顾时安)_老公逼我给女大献血补身后,他悔疯了前言+后续
  • 攻略对象害我绝嗣后,她悔疯了节选_林知夏阿宇方宇热文_小说后续在线阅读_无删减免费完结_
  • 如愿娶到假巫女养妹,他却悔疯了超长版_渺渺洛景修沈含霜连载_小说后续在线阅读_无删减免费完结_
  • 完结文京圈太子爷扫黄被抓,我改嫁八块腹肌风流俏奶爸完结列表_完结文京圈太子爷扫黄被抓,我改嫁八块腹肌风流俏奶爸完结(许知意顾云夕)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1