无法通过 react-native-webview 访问相机

Posted

技术标签:

【中文标题】无法通过 react-native-webview 访问相机【英文标题】:Can't access to camera through react-native-webview 【发布时间】:2020-01-13 11:41:59 【问题描述】:

我正在使用 react-native-webview 版本 4.0.2 。所以我有一个包含一个添加按钮的 web 视图,该按钮允许我们用相机拍照,但是当点击该按钮时,什么都没有显示,也没有显示相机权限。这是在 android 端,但在 ios 上运行良好(我可以看到权限和对相机的访问)。

在我的AndroidManifest.xml 我确实有:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> 

请问您有什么建议吗?

【问题讨论】:

查看此处发布的答案。谢谢***.com/a/64789794/1161998 【参考方案1】:

尝试使用:

<uses-sdk
    android:minSdkVersion="23"
    android:targetSdkVersion="__APILEVEL__" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO"
android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"
android:maxSdkVersion="18" />

【讨论】:

我已经尝试了你的代码 ousama 但无法正常工作仍然没有相机权限 你能检查一下这个link吗?我希望你能从中有所收获。【参考方案2】:

第一步: 在 AndroidManifest.xml 文件中使用它

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

第二步: 在 App.js 文件中授予多个权限

const granted = await PermissionsAndroid.requestMultiple([
  PermissionsAndroid.PERMISSIONS.CAMERA,
  PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
  PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,
]);

第三步: 在 webview 中使用这些属性

geolocationEnabled=true
mediaPlaybackRequiresUserAction=false
javascriptEnabled=true

【讨论】:

【参考方案3】:

你也需要在 webview mediaPlaybackRequiresUserAction=false 中添加这个

【讨论】:

以上是关于无法通过 react-native-webview 访问相机的主要内容,如果未能解决你的问题,请参考以下文章

Android上的react-native-webview无法使用ERR_ACCESS_DENIED加载保存在缓存目录中的本地文件[重复]

react-native-webview:区分脚本引起的window.location和用户点击链接

WebView(react-native-webview)在 Expo SDK36 中获取错误代码 -1

有啥方法可以在 react-native-webview 中禁用 hapticFeedback

react-native-webview 如何注入 javascript?

React-Native-Webview:预期nodeHandle不为null