如何阅读联系人-本地反应

时间:2018-08-04 15:19:41

标签: react-native

我想阅读所有联系人。我正在使用此库:

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)
  })
 }

4 个答案:

答案 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)
      })