Я хотел бы объединить библиотеку " React-Native-Contacts " (github.com/morenoh149/react-native-contacts) и " React-Native-Communications " непосредственно выбрать и позвонить моим контактам, уже зарегистрированным в Справочнике моего телефона. Проблема в том, что я не знаю, как это сделать, изменив реквизиты «OnPress» кода «App. js» из библиотеки « React-Native-Contacts », которая равна «* 1007». * onPress = {() => Contacts.openExistingContact (contact, () => {})} ", назначив компоненту" Communications", который вызывает " Communications.phonecall ('0123456789', true) ". Поэтому цель состоит в том, чтобы изменить номер телефона " 0123456789 " выбранным контактом из моего справочника мобильного телефона.
Вот мой полный код для доступа Контакты для мобильных телефонов и на основе «response-native-contacts»:
import React, { Component } from "react";
import {
PermissionsAndroid,
Platform,
SafeAreaView,
ScrollView,
StyleSheet,
Text,
View,
Image
} from "react-native";
import Contacts from "react-native-contacts";
type Props = {};
export default class App extends Component<Props> {
constructor(props) {
super(props);
this.search = this.search.bind(this);
this.state = {
contacts: [],
searchPlaceholder: "Search"
};
Contacts.iosEnableNotesUsage(true);
}
async componentDidMount() {
if (Platform.OS === "android") {
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_CONTACTS, {
title: "Contacts",
message: "This app would like to view your contacts."
}).then(() => {
this.loadContacts();
});
} else {
this.loadContacts();
}
}
loadContacts() {
Contacts.getAll((err, contacts) => {
if (err === "denied") {
console.warn("Permission to access contacts was denied");
} else {
this.setState({ contacts });
}
});
Contacts.getCount(count => {
this.setState({ searchPlaceholder: `Search ${count} contacts` });
});
}
search(text) {
const phoneNumberRegex = /\b[\+]?[(]?[0-9]{2,6}[)]?[-\s\.]?[-\s\/\.0-9]{3,15}\b/m;
const emailAddressRegex = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/i;
if (text === "" || text === null) {
this.loadContacts();
} else if (phoneNumberRegex.test(text)) {
Contacts.getContactsByPhoneNumber(text, (err, contacts) => {
this.setState({ contacts });
});
} else if (emailAddressRegex.test(text)) {
Contacts.getContactsByEmailAddress(text, (err, contacts) => {
this.setState({ contacts });
});
} else {
Contacts.getContactsMatchingString(text, (err, contacts) => {
this.setState({ contacts });
});
}
}
render() {
return (
<SafeAreaView style={styles.container}>
<View
style={{
paddingLeft: 100,
paddingRight: 100,
justifyContent: "center",
alignItems: "center"
}}
>
<Image
source={require("./logo.png")}
style={{
aspectRatio: 6,
resizeMode: "contain"
}}
/>
</View>
<SearchBar
searchPlaceholder={this.state.searchPlaceholder}
onChangeText={this.search}
/>
<ScrollView style={{ flex: 1 }}>
{this.state.contacts.map(contact => {
return (
<ListItem
leftElement={
<Avatar
img={
contact.hasThumbnail
? { uri: contact.thumbnailPath }
: undefined
}
placeholder={getAvatarInitials(
`${contact.givenName} ${contact.familyName}`
)}
width={40}
height={40}
/>
}
key={contact.recordID}
title={`${contact.givenName} ${contact.familyName}`}
description={`${contact.company}`}
onPress={() => Contacts.openExistingContact(contact, () => { })}
onDelete={() =>
Contacts.deleteContact(contact, () => {
this.loadContacts();
})
}
/>
);
})}
</ScrollView>
</SafeAreaView>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1
}
});
const getAvatarInitials = textString => {
if (!textString) return "";
const text = textString.trim();
const textSplit = text.split(" ");
if (textSplit.length <= 1) return text.charAt(0);
const initials =
textSplit[0].charAt(0) + textSplit[textSplit.length - 1].charAt(0);
return initials;
};
Помогите мне решить эту головоломку, удачно объединив две библиотеки " React-Native-Contacts " (github.com/morenoh149/react-native-contacts) и " React-Native-Communications ", потому что это руководство объясняет, как использовать " React-Native-Communications " (aboutreact .com / make-phone-call-send-sms-or-email-using-реагировать-нативная связь /) не подробно описывает, как это работает с контактами нашего мобильного телефона.
Помогите мне пожалуйста добавьте функцию " React-Native-Communications " phoneCall в мой код " React-Native-Contacts " выше.