我想阅读所有联系人。我正在使用此库:
https://github.com/rt2zz/react-native-contacts
我安装了它,并在manifest.xml中添加了此权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
但是当我想调用getAll函数时,我的应用程序向我显示Unfortunately, *** has stopped
componentDidMount(){
Contacts.getAll((err, contacts) => {
if (err) throw err
//console.log(contacts)
})
}
答案 0 :(得分:1)
新版本的android除了manifest.xml之外,还需要明确的用户权限
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_CONTACTS, {
title: "Contacts",
message: "This app would like to view your contacts."
}).then(() => {
Contacts.getAll((err, contacts) => {
if (err === "denied") {
// error
} else {
console.log(contacts[0]);
}
});
});
答案 1 :(得分:0)
安装该库,此示例使用的是npm:
npm install react-native-contacts
将已读联系人权限添加到您的AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CONTACTS" />
这是基本的代码示例。
import Contacts from 'react-native-contacts';
Contacts.getAll((err, contacts) => {
if (err) throw err;
// contacts returned
console.log(contacts)
})
确保您实际上在做import
。
答案 2 :(得分:0)
使用npm安装软件包
npm install react-native-contacts
用纱包安装
yarn add react-native-contacts
然后做
react-native link react-native-contacts
将读取联系人权限添加到您的AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CONTACTS" />
简单代码
import Contacts from 'react-native-contacts';
componentDidMount(){
Contacts.getAll((err, contacts) => {
if (err) throw err;
// contacts returned
console.log(contacts)
})
}
然后
1-您必须重新构建应用程序
2-然后转到应用程序设置并授予联系人权限
3-react-native run-android
答案 3 :(得分:0)
您需要为用户请求权限。
https://facebook.github.io/react-native/docs/permissionsandroid.html
async requestReadContactsPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
{
'title': 'App Premission',
'message': 'Chat x App need permission.'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can read contacts")
} else {
console.log("read contacts permission denied")
}
} catch (err) {
console.warn(err)
}
}
然后您需要检查权限是否已授权
listContacts() {
this.requestReadContactsPermission().then(
Contacts.checkPermission((err, permission) => {
if (err) throw err;
// Contacts.PERMISSION_AUTHORIZED || Contacts.PERMISSION_UNDEFINED || Contacts.PERMISSION_DENIED
if (permission === 'undefined') {
Contacts.requestPermission((err, permission) => {
// ...
})
}
if (permission === 'authorized') {
this.getAllContacts()
}
if (permission === 'denied') {
// x.x
}
})
)
}
此后,您可以阅读联系人列表
Contacts.getAll((err, contacts) => {
if (err) throw err;
// contacts returned
console.log(contacts)
})