The Contacts API provides access to read, write, or select device contacts.
//Create new contact
var myContact = Contacts.create();
myContact.name = new ContactName(null, 'Doe', 'John');
myContact.phoneNumbers = [new ContactField('home', '123456789',true)];
myContact.save()
.then(()=> {
console.log("Contact saved");
})
.catch((e)=> {
console.error('Unable to save contact:', e);
});
...
//Find contacts
var options = new ContactFindOptions();
options.filter = "John";
options.multiple = true;
var fields = ["displayName", "phoneNumbers"];
Contacts.find(fields, options)
.then((result)=> {
console.log(result);
for (var i = 0; i < result.length; i++) {
for (var j = 0; j < result[i].phoneNumbers.length; j++) {
console.log("Pref: " + result[i].phoneNumbers[j].pref + "\n" +
"Type: " + result[i].phoneNumbers[j].type + "\n" +
"Value: " + result[i].phoneNumbers[j].value );
}
}
})
.catch((e)=> {
console.error('Unable to find contact:', e);
});
//Create new contact
var myContact = window.Contacts.create();
myContact.name = new window.ContactName(null, "Doe", "John");
myContact.phoneNumbers = [
new window.ContactField("home", "123456789", true),
];
myContact
.save()
.then(() => {
console.log("Contact saved");
})
.catch((e) => {
console.error("Unable to save contact:", e);
});
...
var options = new window.ContactFindOptions();
options.filter = "John";
options.multiple = true;
var fields = ["displayName", "phoneNumbers"];
window.Contacts.find(fields, options)
.then((result) => {
console.log(result);
for (var i = 0; i < result.length; i++) {
for (var j = 0; j < result[i].phoneNumbers.length; j++) {
console.log(
"Pref: " +
result[i].phoneNumbers[j].pref +
"\n" +
"Type: " +
result[i].phoneNumbers[j].type +
"\n" +
"Value: " +
result[i].phoneNumbers[j].value
);
}
}
})
.catch((e) => {
console.error("Unable to find contact:", e);
});
//Create new contact
var myContact = window.Contacts.create();
myContact.name = new window.ContactName(null, "Doe", "John");
myContact.phoneNumbers = [
new window.ContactField("home", "123456789", true),
];
myContact
.save()
.then(() => {
console.log("Contact saved");
})
.catch((e) => {
console.error("Unable to save contact:", e);
});
...
var options = new window.ContactFindOptions();
options.filter = "John";
options.multiple = true;
var fields = ["displayName", "phoneNumbers"];
window.Contacts.find(fields, options)
.then((result) => {
console.log(result);
for (var i = 0; i < result.length; i++) {
for (var j = 0; j < result[i].phoneNumbers.length; j++) {
console.log(
"Pref: " +
result[i].phoneNumbers[j].pref +
"\n" +
"Type: " +
result[i].phoneNumbers[j].type +
"\n" +
"Value: " +
result[i].phoneNumbers[j].value
);
}
}
})
.catch((e) => {
console.error("Unable to find contact:", e);
});
//Create new contact
var myContact = (<any>window).Contacts.create();
myContact.name = new (<any>window).ContactName(null, "Doe", "John");
myContact.phoneNumbers = [
new (<any>window).ContactField("home", "123456789", true),
];
myContact
.save()
.then(() => {
console.log("Contact saved");
})
.catch((e) => {
console.error("Unable to save contact:", e);
});
...
var options = new (<any>window).ContactFindOptions();
options.filter = "John";
options.multiple = true;
var fields = ["displayName", "phoneNumbers"];
(<any>window).Contacts.find(fields, options)
.then((result) => {
console.log(result);
for (var i = 0; i < result.length; i++) {
for (var j = 0; j < result[i].phoneNumbers.length; j++) {
console.log(
"Pref: " +
result[i].phoneNumbers[j].pref +
"\n" +
"Type: " +
result[i].phoneNumbers[j].type +
"\n" +
"Value: " +
result[i].phoneNumbers[j].value
);
}
}
})
.catch((e) => {
console.error("Unable to find contact:", e);
});
//Create new contact
var myContact = window.Contacts.create();
myContact.name = new window.ContactName(null, "Doe", "John");
myContact.phoneNumbers = [
new window.ContactField("home", "123456789", true),
];
myContact
.save()
.then(() => {
console.log("Contact saved");
})
.catch((e) => {
console.error("Unable to save contact:", e);
});
...
var options = new window.ContactFindOptions();
options.filter = "John";
options.multiple = true;
var fields = ["displayName", "phoneNumbers"];
window.Contacts.find(fields, options)
.then((result) => {
console.log(result);
for (var i = 0; i < result.length; i++) {
for (var j = 0; j < result[i].phoneNumbers.length; j++) {
console.log(
"Pref: " +
result[i].phoneNumbers[j].pref +
"\n" +
"Type: " +
result[i].phoneNumbers[j].type +
"\n" +
"Value: " +
result[i].phoneNumbers[j].value
);
}
}
})
.catch((e) => {
console.error("Unable to find contact:", e);
});
create(properties: object): Contact
This method creates a new contact, but it does not persist the contact to device storage. To persist the contact to device storage, invoke contact.save().
find(fields: string[], options: ContactFindOptions): Promise<Contact[]>
Return a promise that resolves with the array of Contact matching search criteria.
pickContact(): Promise<Contact>
This function picks contact from phone using contact picker UI and returns a promise that resolves with the selected Contact object.
Contact {
id : string; //unique identifier, should only be set by native code
displayName : string; //name of this Contact, suitable for display to end users
name : ContactName; //an object containing all components of a persons name
nickname : string; //casual name by which to address the contact
phoneNumbers : ContactField[]; //array of phone numbers
emails : ContactField[]; //array of email addresses
addresses : ContactAddress[]; //array of addresses
ims : ContactField[]; //instant messaging user ids
organizations : ContactOrganization[];
birthday : string; //contact's birthday
note : string; //user notes about contact
photos : ContactField[]; //array of the contact's photos
categories : ContactField[]; //array of all the user-defined categories associated with the contact
urls : ContactField[]; //contact's web sites
}
ContactAddress {
id? : string; //unique identifier, should only be set by native code
pref? : boolean; //set to true if this ContactAddress contains the user's preferred value
type? : string; //a string indicating what type of field this is
formatted? : string; //full address formatted for display
streetAddress? : string; //full street address
locality? : string; //city or locality
region? : string; //state or region
postalCode? : string; //zip code or postal code
country? : string; //country name
}
ContactField {
id? : string; //unique identifier, should only be set by native code
type? : string; //a string indicating what type of field this is
value? : string; //value of the field, such as a phone number or email address
pref? : boolean; //set to true if this ContactField contains the user's preferred value
}
ContactName {
formatted? : string; //complete name of the contact
familyName? : string; //contact's family name
givenName? : string; //contact's given name
middleName? : string; //contact's middle name
honorificPrefix? : string; //contact's prefix (example Mrs. or Eng.)
honorificSuffix? : string; //contact's suffix (example Esq.)
}
ContactOrganization {
id? : string; //unique identifier, should only be set by native code
pref? : boolean; //set to true if this ContactOrganization contains the user's preferred value
type? : string; //a string that indicates what type of field this is
name? : string; //name of the organizatio
department? : string; //department the contract works for
title? : string; //contact's title at the organization
}
ContactFindOptions {
filter? : string; //used to match contacts against
multiple? : boolean; //used to determine if more than one contact should be returned
desiredFields? : string[]; //Contact fields to be returned back. If specified, the resulting Contact object only features values for these fields
hasPhoneNumber? : boolean; //used to filter the search and only return contacts that have a phone number informed
}
enum ContactFieldType{
addresses: "addresses",
birthday: "birthday",
categories: "categories",
country: "country",
department: "department",
displayName: "displayName",
emails: "emails",
familyName: "familyName",
formatted: "formatted",
givenName: "givenName",
honorificPrefix: "honorificPrefix",
honorificSuffix: "honorificSuffix",
id: "id",
ims: "ims",
locality: "locality",
middleName: "middleName",
name: "name",
nickname: "nickname",
note: "note",
organizations: "organizations",
phoneNumbers: "phoneNumbers",
photos: "photos",
postalCode: "postalCode",
region: "region",
streetAddress: "streetAddress",
title: "title",
urls: "urls"
}
enum ContactError{
UNKNOWN_ERROR : 0,
INVALID_ARGUMENT_ERROR : 1,
TIMEOUT_ERROR : 2,
PENDING_OPERATION_ERROR : 3,
IO_ERROR : 4,
NOT_SUPPORTED_ERROR : 5,
OPERATION_CANCELLED_ERROR : 6,
PERMISSION_DENIED_ERROR : 20
}