在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):morenoh149/react-native-contacts开源软件地址(OpenSource Url):https://github.com/morenoh149/react-native-contacts开源编程语言(OpenSource Language):Java 56.1%开源软件介绍(OpenSource Introduction):To contribute read CONTRIBUTING.md. Ask questions on stackoverflow not the issue tracker. Usage
import Contacts from 'react-native-contacts';
Contacts.getAll().then(contacts => {
// contacts returned
}) See the full API for more methods. Android permissionsOn android you must request permissions beforehand import { PermissionsAndroid } from 'react-native';
import Contacts from 'react-native-contacts';
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
{
'title': 'Contacts',
'message': 'This app would like to view your contacts.',
'buttonPositive': 'Please accept bare mortal'
}
)
.then(Contacts.getAll()
.then((contacts) => {
// work with contacts
console.log(contacts)
})
.catch((e) => {
console.log(e)
})) InstallationPlease read this entire section. npm
yarn
You no longer need to include the pod line in the PodFile since V7.0.0+, we now support autolinking!If you were previously using manually linking follow these steps to upgrade
react native version 60 and aboveIf you are using react native version 0.60 or above you do not have to link this library. iosStarting with 0.60 on iOS you have to do the following:
react native below 60iOSUsing the same instructions as https://facebook.github.io/react-native/docs/linking-libraries-ios.html
Run the app via the Run button in xcode or AndroidFor react native versions 0.60 and above you have to use Android X. Android X support was added to react-native-contacts in version 5.x+. If you are using rn 0.59 and below install rnc versions 4.x instead.
...
include ':react-native-contacts'
project(':react-native-contacts').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-contacts/android')
...
dependencies {
...
implementation project(':react-native-contacts')
}
// MainApplication.java
import com.rt2zz.reactnativecontacts.ReactNativeContacts; // <--- import
public class MainApplication extends Application implements ReactApplication {
......
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new ReactNativeContacts()); // <------ add this
}
......
} PermissionsAPI 23+Android requires allowing permissions with https://facebook.github.io/react-native/docs/permissionsandroid.html
The ...
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
... API 22 and belowAdd ...
<uses-permission android:name="android.permission.READ_PROFILE" />
... ProGuardIf you use Proguard, the snippet below on proguard-rules.pro Without it, your apk release version could failed
All RN versionsiosAdd kit specific "permission" keys to your Xcode Accessing note filed on iOS 13 (optional)If you'd like to read/write the contact's notes, call the API
Example Contact Record{
recordID: '6b2237ee0df85980',
backTitle: '',
company: '',
emailAddresses: [{
label: 'work',
email: '[email protected]',
}],
familyName: 'Jung',
givenName: 'Carl',
middleName: '',
jobTitle: '',
phoneNumbers: [{
label: 'mobile',
number: '(555) 555-5555',
}],
hasThumbnail: true,
thumbnailPath: 'content://com.android.contacts/display_photo/3',
postalAddresses: [{
label: 'home',
formattedAddress: '',
street: '123 Fake Street',
pobox: '',
neighborhood: '',
city: 'Sample City',
region: 'CA',
state: 'CA',
postCode: '90210',
country: 'USA',
}],
prefix: 'MR',
suffix: '',
department: '',
birthday: {'year': 1988, 'month': 1, 'day': 1 },
imAddresses: [
{ username: '0123456789', service: 'ICQ'},
{ username: 'johndoe123', service: 'Facebook'}
],
isStarred: false,
} Android only
iOS onlycheckPermission(): Promise - checks permission to access Contacts requestPermission(): Promise - request permission to access Contacts Adding ContactsCurrently all fields from the contact record except for thumbnailPath are supported for writing var newPerson = {
emailAddresses: [{
label: "work",
email: "[email protected]",
}],
familyName: "Nietzsche",
givenName: "Friedrich",
}
Contacts.addContact(newPerson) Open Contact FormCurrently all fields from the contact record except for thumbnailPath are supported for writing var newPerson = {
emailAddresses: [{
label: "work",
email: "[email protected]",
}],
displayName: "Friedrich Nietzsche"
}
Contacts.openContactForm(newPerson).then(contact => {
// contact has been saved
}) You may want to edit the contact before saving it into your phone book. So using Updating ContactsExample Contacts.getAll().then(contacts => {
// update the first record
let someRecord = contacts[0]
someRecord.emailAddresses.push({
label: "junk",
email: "[email protected]",
})
Contacts.updateContact(someRecord).then(() => {
// record updated
})
}) Update reference contacts by their recordID (as returned by the OS in getContacts). Apple does not guarantee the recordID will not change, e.g. it may be reassigned during a phone migration. Consequently you should always grab a fresh contact list with Add numbers to an existing contactExample var newPerson = {
recordID: '6b2237ee0df85980',
phoneNumbers: [{
label: 'mobile',
number: '(555) 555-5555',
}, ...
]
}
Contacts.editExistingContact(newPerson).then(contact => {
//contact updated
}); Add one or more phone numbers to an existing contact. On Android the edited page will be opened. On iOS the already edited contact will be opened with the possibility of further modification. BugsThere are issues with updating contacts on Android:
Delete ContactsYou can delete a record using only it's recordID Contacts.deleteContact({recordID: 1}).then(recordId => {
// contact deleted
}) Or by passing the full contact object with a Contacts.deleteContact(contact).then((recordId) => {
// contact deleted
}) Displaying ThumbnailsThe thumbnailPath is the direct URI for the temp location of the contact's cropped thumbnail image. <Image source={{uri: contact.thumbnailPath}} /> Permissions Methods (optional)
Usage as follows: Contacts.checkPermission().then(permission => {
// Contacts.PERMISSION_AUTHORIZED || Contacts.PERMISSION_UNDEFINED || Contacts.PERMISSION_DENIED
if (permission === 'undefined') {
Contacts.requestPermission().then(permission => {
// ...
})
}
if (permission === 'authorized') {
// yay!
}
if (permission === 'denied') {
// x.x
}
}) These methods are only useful on iOS. For Android you'll have to use https://facebook.github.io/react-native/docs/permissionsandroid.html These methods do not re-request permission if permission has already been granted or denied. This is a limitation in iOS, the best you can do is prompt the user with instructions for how to enable contacts from the phone settings page ExampleYou can find an example app/showcase here MaintainersIf your business needs premium react native support please reach out to the maintainer. harrymoreno.com
LICENSE |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论