按下按钮后,将执行以下代码:
takePicture = async function() {
if (this.camera) {
const options = { quality: 0.5, base64: true }
const data = await this.camera.takePictureAsync(options)
CameraRoll.saveToCameraRoll(data.uri)
}
}
调试器显示:
Possible Unhandled Promise Rejection
Error: Permission Denied ...
显然,CameraRoll需要用户许可才能执行此操作,但是我已经将它们包含在我的AndroidManifest.xml文件中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gradualcamera">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我已经尝试删除该应用程序并重新启动Metro服务器。
我从“设置”中手动启用了存储权限,现在可以使用了。但是,当我删除该应用程序并再次重新安装它时,不会向用户请求存储权限。我试图用react-native-permissions请求它,但是它不起作用:
componentDidMount() {
_requestPermission = () => {
Permissions.request('storage').then(response => {
// Returns once the user has chosen to 'allow' or to 'not allow' access
// Response is one of: 'authorized', 'denied', 'restricted', or 'undetermined'
console.log(response)
})
}
}
在我将其从onComponentMount方法中删除并用按钮触发后,react-native-permissions方法以某种方式开始起作用。
qq_笑_17
相关分类