#android #react-native #hyperlink #expo #react-native-contacts
#Android #реагировать-родной #гиперссылка #выставка #реагировать на собственные контакты
Вопрос:
Я пытаюсь использовать react-native-contacts с приложением react-native, созданным с помощью Expo, но у меня есть это сообщение об ошибке :
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')
}
У кого-нибудь была такая проблема?
Спасибо за помощь!
Ответ №1:
Насколько я понимаю, вы разрабатываете свое приложение с помощью Expo. Некоторые независимые библиотеки плохо работают с Expo. У меня есть два предложения для вас.
- Если вы хотите продолжать использовать react-native-contacts, вам необходимо извлечь свое приложение из Expo
-
Или напрямую используйте API контактов Expo, вы можете найти подробную информацию по этой ссылке Контакты Expo Я бы сделал это, что требует от вас меньше работы, и решил вашу проблему
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. Проблема
Комментарии:
1. Большое спасибо! Это, скорее всего, означает, что вы не можете использовать другие библиотеки:-/ Вы знаете способ ski expo?
2. Вам нужно извлечь свой проект expo с помощью
expo eject
. Я бы не рекомендовал вам извлекать, если вам не нужно писать собственные коды. Вы можете прочитать здесь подробнее. docs.expo.io/versions/v32.0.0/expokit/expokit3. Спасибо! На данный момент я пойду с expo! Большое спасибо!
Ответ №2:
Обновление за июль 2021
Contacts
Модуль был перемещен из основного expo
пакета в expo-contacts
(см. Документацию).
Пример:
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);
}