猿问

React Native CameraRoll权限被拒绝

按下按钮后,将执行以下代码:


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方法以某种方式开始起作用。


幕布斯6054654
浏览 326回答 2
2回答

qq_笑_17

只需添加以下行AndroidManifest.xml:<application&nbsp;tag&nbsp;android:requestLegacyExternalStorage="true"
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答