我正在尝试使用Expo制作的react-native应用程序使用react-native-contacts,但是我收到此错误消息:
undefined is not an object (evaluating '_reactNativeContacts.default.getAll')
这是我使用的代码:
import React from 'react';
import {
Image,
Platform,
ScrollView,
StyleSheet,
Text,
TouchableOpacity,
View,
Modal,
TouchableHighlight,
ImageBackground,
TextInput,
Picker,
PermissionsAndroid
} from 'react-native';
import { WebBrowser } from 'expo';
import Contacts from 'react-native-contacts';
import { MonoText } from '../components/StyledText';
Contacts.getAll((err, contacts) => {
if (err === 'denied'){
// error
} else {
// contacts returned in Array
}
})
在此页面上,我尝试按照他的所有步骤进行android部分的安装: https://github.com/rt2zz/react-native-contacts#getting-started
但是我找不到在哪里可以做这部分: 我不知道在哪里可以找到这个文件:android / settings.gradle
通过我在应用目录中尝试此命令“ react-native link”的方式,没有任何改变。
Android
In android/settings.gradle
...
include ':react-native-contacts'
project(':react-native-contacts').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-contacts/android')
In android/app/build.gradle
...
dependencies {
...
implementation project(':react-native-contacts')
}
有人遇到过这种问题吗? 感谢您的帮助!
答案 0 :(得分:1)
据我了解,您正在使用Expo开发应用程序。一些独立的库无法与Expo一起使用。我有两个建议给你。
或直接使用Expo的通讯录api,您可以在此链接Expo's Contacts中找到详细信息,我会这样做,这对您来说解决问题并减少工作量
import { Contacts } from 'expo';
const { data } = await Contacts.getContactsAsync({
fields: [Contacts.Fields.Emails],
});
if (data.length > 0) {
const contact = data[0];
console.log(contact);
}
您可以在react-native-contacts github page中找到相同的问题。 Issue
答案 1 :(得分:0)
Contacts
模块已从核心 expo
包移至 expo-contacts
(请参阅 documentation)。
import * as Contacts from 'expo-contacts';
const { status } = await Contacts.requestPermissionsAsync();
if (status === 'granted') {
const { data: contacts } = await Contacts.getContactsAsync();
console.log('Retrieved contacts!', contacts);
}