【问题标题】:Possible Unhandled Promise Rejection (id:0) TypeError: undefined is not an object (evaluating 'ImagePicker.Permissions.askAsync)可能未处理的 Promise Rejection (id:0) TypeError: undefined is not an object (evalating 'ImagePicker.Permissions.askAsync)
【发布时间】:2020-12-22 17:48:59
【问题描述】:

我正在使用 React-Native 和 Expo 构建一个 iOS 应用程序。我已经弄清楚如何访问用户的照片库,但无法从他们的设备请求权限。相反,它只是在不询问的情况下访问相机胶卷,这在 iOS 中显然是不允许的。以下是我的一些代码:

    import React, {useState, useEffect, useRef} from 'react';
    import * as ImagePicker from 'expo-image-picker';
    import Permissions, {usePermissions} from 'expo-permissions';
    import Constants from 'expo-constants'

//useEffect函数是检查异步函数是否被接受时运行的函数

const Screen = ({navigation}) => {

const [ imagePicker1, setImagePicker1 ] = useState(null);

useEffect(() => {
    const permission_get1 = async ()=> {
        if (Platform.OS !== 'web'){
            let { status } = await ImagePicker.Permissions.askAsync(Permissions.MEDIA_LIBRARY);
            if (status !== 'granted'){
                console.log('No permission given')
                alert('Camera roll required for to upload photo from your library');
                return;
            }
            /*if (status === 'granted'){
                console.log('Permission granted')*/

            let imagePicker1 = await ImagePicker.getMediaLibraryAsync()
                setImagePicker1(imagePicker1)
                console.log('It worked')
            }

    };
            permission_get1();
}, []);

【问题讨论】:

    标签: react-native expo typeerror ios-permissions expo-permissions


    【解决方案1】:

    我最终用这个来让它工作:我相信前面的例子使用的是一种折旧的方法。

     import * as ImagePicker from 'expo-image-picker'
    
    const pickImage = async ()=>{
      const { granted } = await Permissions.askAsync(Permissions.CAMERA_ROLL)
      if(granted){
        console.log('access granted')
        let data = await ImagePicker.launchImageLibraryAsync({
          mediaTypes:ImagePicker.MediaTypeOptions.Images,
          allowsEditing: true,
          aspect:[1,1],
          quality:0.5,
        })
        console.log(data)
    
        if (!data.cancelled){
        setImage(data.uri);
      }
      
      }else{
        Alert.alert('Permissions required to access camera roll.')
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 2019-11-02
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多