Ответ 1
Если вы посмотрите на исходный код react-native-phone-call
, то в конечном итоге это просто оболочка для:
import {Linking} from 'react-native'
Linking.openURL('tel:${phoneNumber}')
Я хочу вызвать значение компонента Text, когда я нажимаю его. Но на самом деле у меня недостаточно знаний для этого.
Подскажите, пожалуйста, какую библиотеку или компонент я должен использовать?
Если вы посмотрите на исходный код react-native-phone-call
, то в конечном итоге это просто оболочка для:
import {Linking} from 'react-native'
Linking.openURL('tel:${phoneNumber}')
Вы можете использовать этот метод для вызова номеров в Android и IOS, поместить этот метод в файл утилит и использовать метод, где вы хотите. ура
import { Linking, Alert, Platform } from 'react-native';
export const callNumber = phone => {
console.log('callNumber ----> ', phone);
let phoneNumber = phone;
if (Platform.OS !== 'android') {
phoneNumber = 'telprompt:${phone}';
}
else {
phoneNumber = 'tel:${phone}';
}
Linking.canOpenURL(phoneNumber)
.then(supported => {
if (!supported) {
Alert.alert('Phone number is not available');
} else {
return Linking.openURL(phoneNumber);
}
})
.catch(err => console.log(err));
};
это очень просто для ios:
import {Linking} from 'react-native'
<Text onPress={()=>{Linking.openURL('tel:119');}} style={styles.funcNavText}>119</Text>
Неверный ответ, но у меня недостаточно представителей, чтобы комментировать.
Как насчет реагировать на родной телефонный звонок или реагировать на родную связь?
1. установить пакет response-native-phone-call с помощью npm
$ npm install --save react-native-phone-call
2. создать метод с именем makeCall()
makeCall = (number) => {
const args = {
number: number, // String value with the number to call
prompt: true // Optional boolean property. Determines if the user should be prompt prior to the call
}
call(args).catch(console.error)
}
3. вызвать метод в событии onPress TouchableOpacity
<TouchableOpacity key={index} style={{width: '80%', height: 80, backgroundColor: 'rgb(186, 186, 186)', alignItems:'center', justifyContent: 'space-between', borderBottomWidth: 0.5, borderBottomColor: '#000000'}}
onPress={()=> this.makeCall(item.contactNumber)}
>
import React, { Component } from "react";
import {Linking,Platform,TouchableOpacity,Text} from "react-native";
export default class MakeCall extends Component {
dialCall = (number) => {
let phoneNumber = '';
if (Platform.OS === 'android') { phoneNumber = 'tel:${number}'; }
else {phoneNumber = 'telprompt:${number}'; }
Linking.openURL(phoneNumber);
};
Render(){
return(
<TouchableOpacity
style={{
height: 30,
width: 30,
backgroundColor: "#329df4",
alignItems: "center",
justifyContent: "center",
borderRadius: 5
}}
onPress={()=>{this.dialCall(123456789)}}
>
<Text>Phone</Text>
</TouchableOpacity>
)
}
}
Можно просто вставить действие onPress с помощью {Linking.openURL(tel:${phonenumber}
);}
<Text onPress={()=>{Linking.openURL('tel:8777111223');} }>8777111223</Text>
ps: не забудьте импортировать линкинг из'act-native '