React Native contacts:null不是对象

问题描述 投票:0回答:1

我正在使用React Native应用,我需要将新联系人保存到手机中。通过研究,我发现有3个实现该功能的库:expo-contacts,react-native-contacts和react-native-unified-contacts。在每一本书中,我都遵循安装说明,但是在每一本书中,我始终存在相同的错误:

Possible Unhandled Promise Rejection (id: 0):
TypeError: null is not an object (evaluating '_reactNativeUnifiedContacts.default.getContacts')
http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:150346:52
tryCallOne@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:27023:16
http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:27124:27
_callTimer@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:30578:17
_callImmediatesPass@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:30614:19
callImmediates@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:30833:33
callImmediates@[native code]
__callImmediates@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2625:35
http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2402:34
__guard@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2608:15
flushedQueue@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2401:21
flushedQueue@[native code]
invokeCallbackAndReturnFlushedQueue@[native code]

此确切的错误来自react-native-unified-contacts,但是所有这些都引发了“ null不是对象”错误。首先,我虽然可能是链接问题,但是由于我具有React Native 0.61版本,因此链接是自动完成的。因此,我一直遇到此错误,无法添加任何联系人。

android react-native contacts
1个回答
0
投票

尝试在.then()之后添加catch块,它解决了我的问题。

PermissionsAndroid.request(
            PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
            {
              'title': 'Contacts',
              'message': 'This app would like to view your contacts.'
            }
          ).then(() => {
            con.getAll((err, contacts) => {
              if (err === 'denied'){
                // error
              } else {
                // contacts returned in Array
                console.log(contacts);
              }
            })
          })
          .catch((err)=> {
              console.log(err);
          })
© www.soinside.com 2019 - 2024. All rights reserved.