如何在Android设备上使用React Native Webview请求麦克风权限

时间:2019-03-30 02:32:13

标签: android reactjs react-native expo

我正在用React-Native和Expo构建一个基于Web的应用程序。它使用WebView来显示将通过麦克风进行录制的网站。但是,我找不到该应用程序请求麦克风访问的方法。如果我通过浏览器访问该网站,它将要求使用麦克风。

我尝试将权限添加到AndroidManifest文件。

 <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.MICROPHONE" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />

尽管如此,它仍然不请求访问麦克风,结果该网站将无法加载(因为它无法检测到麦克风)。我还有其他方法可以访问React Native的WebView组件中的麦克风吗?谢谢你!

2 个答案:

答案 0 :(得分:0)

请参考以下链接。

https://github.com/Unapedra/rn-android-permission-webview

它包含仅实现Android Webviews的onPermissionRequest()函数的组件,因此要求用户向网络上的摄像头,麦克风等授予权限。 ReactNative的本机Webview尚未实现此功能,因此,不向用户提出任何要求(它只是失败并以静默方式拒绝许可)。

该链接中提供了示例代码。

答案 1 :(得分:0)

您可以使用expo-av来请求麦克风权限。我发现这一点很棒,因为我想使用react-native-voice,因此不得不退出项目。之后,我对android清单文件绝对不做任何操作,该应用程序仍然要求获得权限和所有内容。