React Native Contact on Android



我已经尝试在这里和互联网上搜索答案,但不幸的是,我一无所获。我只是试着储存所有联系人以在之后使用它们,但当我尝试Contacts.getAll(err,contacts)时,它立即返回一个错误:来自JS的错误调用:字段大小不同

(我不确定这是否相关,但在发生错误后,日志中有以下选项卡:[[11,4,32,32,10,32,29,32],[3,0,1,0,0,0,4,0],[[],[],[59],[60,0,1619865418703,false],[],[61,0,1619865418704,false],[62,2000,1619865418706,false]],1534](

我检查了我是否有阅读联系人的授权,它告诉我有它(在日志中有你可以阅读联系人。这是我代码的问题部分:

import React, {useState, useEffect} from 'react';
import {
PermissionsAndroid,
Platform,
SafeAreaView,
StyleSheet,
Text,
View,
FlatList,
TextInput,
} from 'react-native';
import Contacts from 'react-native-contacts';
import MonBouton from './MonBouton';
const requestReadContactsPermission = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
{
title: 'App Premission',
message: 'Ask to read your contacts',
},
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log('You can read contacts');
} else {
console.log('read contacts permission denied');
}
} catch (err) {
console.warn(err);
}
};
const Friends = props => {
let [contacts, setContacts] = useState([]);
const loadContacts = () => {
Contacts.getAll((err, contacts) => {
console.log('contacts -> ', contacts);
if (err === 'denied') {
console.warn('Permission to access contacts was denied');
} else {
setContacts(contacts);
console.log('contacts', contacts);
}
});
};
return (
<View>
<MyButton
titre="Add contacts"
onPress={() => loadContacts()}
/>
<MyButton
titre="request permissions"
onPress={requestReadContactsPermission}
/>
</View>
);
};

如果你有任何想法,我很乐意听他们的,我对React很陌生,我没有发现任何关于这个问题的信息。我希望我说得足够准确,这是我在这里的第一个问题。

您需要重写loadContacts函数

const loadContacts = () => {
Contacts.getAll()
.then(contacts => {
console.log('contacts -> ', contacts);
setAdresses(contacts);
console.log('contacts', contacts);
})
.catch(err => {
if (err === 'denied') {
console.warn('Permission to access contacts was denied');
}
});
};

getAll((返回一个javascript Promise,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

最新更新