Geckoview获取麦克风权限

3

我正在尝试在GeckoView元素中使用网站的音频录制功能。因此,我在AndroidManifest.xml文件中设置了权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

当我尝试在网站上录制音频时,一个属于该网站而非浏览器功能的HTML弹出窗口告诉我需要授权。我无法做其他任何事情 - 它只是一个没有按钮的提示。
另一方面,当我使用常规的Firefox浏览器时,当这个HTML弹出窗口显示时,浏览器会询问我是否允许该网站使用我的麦克风。
我在GeckoView中没有被问到过这个问题,因此需要找到一种方式在GeckoView内允许该网站使用麦克风的权限。 我需要在GeckoView内授权吗?我查阅了关于GeckoView权限的文档,但由于我的基础编码知识有限,无法使其正常运作。
非常感谢任何帮助!
非常感谢!

“它告诉我需要授权”,您能详细解释一下吗?“它”是什么,它是如何请求授权的?如果您指的是在GeckoView弹出窗口中,那可能是从浏览器体验中传递过来的。 - CommonsWare
抱歉表述不清:当我在普通的Firefox中打开相关网站并想要使用音频录制功能时,会弹出一个弹窗(HTML / 网站的一部分),告诉我需要允许麦克风权限。同时,Firefox会询问我是否要授予该网站权限。在GeckoView中,我只看到了HTML弹窗(告诉我需要允许权限),但没有任何方式可以授予权限。 - user1658080
这个答案怎么样?检查一下清单内容,您可以尝试添加与麦克风相关的权限。 - buræquete
1个回答

2
GeckoView本身不显示任何权限对话框。但是它提供了一个代理,您可以自己实现:GeckoSession.setPromptDelegate()
您需要做两件事情:
1. 如果需要,通过实现GeckoSession.PermissionDelegate.onAndroidPermissionsRequest()从Android系统请求权限。 2. 通过实现GeckoSession.PermissionDelegate.onContentPermissionRequest()处理来自网站的内容权限请求,这意味着在所提供的callback对象上调用grant()reject()
如果您不想使用自定义实现,则Mozilla's Android Components项目在GeckoView之上提供了此功能和许多其他“浏览器特性”的实现。像"Firefox Preview"这样的浏览器使用此项目中的实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接