无法通过 react-native-webview 访问相机
Can't access to camera through react-native-webview
我正在使用 react-native-webview
版本 4.0.2。所以我有一个 webview,其中包含一个添加按钮,允许我们用相机拍照,但是当单击该按钮时,没有显示任何内容,也没有显示相机权限。这是在 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"/>
请问您有什么建议吗?
尝试使用:
<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" />
你也需要在 webview mediaPlaybackRequiresUserAction={false}
中添加这个
第一步:
在 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}
我正在使用 react-native-webview
版本 4.0.2。所以我有一个 webview,其中包含一个添加按钮,允许我们用相机拍照,但是当单击该按钮时,没有显示任何内容,也没有显示相机权限。这是在 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"/>
请问您有什么建议吗?
尝试使用:
<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" />
你也需要在 webview mediaPlaybackRequiresUserAction={false}
中添加这个第一步: 在 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}