void ShowPersonViewController() { var predicate = CNContact.GetPredicateForContacts("Appleseed"); ICNKeyDescriptor[] toFetch = { CNContactViewController.DescriptorForRequiredKeys }; CNContactStore store = new CNContactStore(); NSError fetchError; CNContact[] contacts = store.GetUnifiedContacts(predicate, toFetch, out fetchError); if (contacts != null && contacts.Length > 0) { CNContact contact = contacts[0]; var peopleViewController = CNContactViewController.FromContact(contact); peopleViewController.AllowsEditing = true; NavigationController.PushViewController(peopleViewController, true); } else { var alert = UIAlertController.Create("Error", "Could not find Appleseed in the Contacts application", UIAlertControllerStyle.Alert); alert.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Default, null)); PresentViewController(alert, true, null); } }
internal void RaiseContactSelected(CNContact contact) { if (this.ContactSelected != null) { this.ContactSelected(contact); } }
public void Ctor() { using (var contact = new CNContact ()) { Assert.IsNull (contact.Birthday, "Birthday"); Assert.AreEqual (0, contact.ContactRelations.Length, "ContactRelations"); Assert.AreEqual (CNContactType.Person, contact.ContactType, "ContactType"); Assert.AreEqual (0, contact.Dates.Length, "Dates"); Assert.AreEqual (string.Empty, contact.DepartmentName, "DepartmentName"); Assert.AreEqual (0, contact.EmailAddresses.Length, "EmailAddresses"); Assert.AreEqual (string.Empty, contact.FamilyName, "FamilyName"); Assert.AreEqual (string.Empty, contact.GivenName, "GivenName"); Assert.AreNotEqual (string.Empty, contact.Identifier, "Identifier"); Assert.IsNull (contact.ImageData, "ImageData"); Assert.IsFalse (contact.ImageDataAvailable, "ImageDataAvailable"); Assert.AreEqual (0, contact.InstantMessageAddresses.Length, "InstantMessageAddresses"); Assert.AreEqual (string.Empty, contact.JobTitle, "JobTitle"); Assert.AreEqual (string.Empty, contact.MiddleName, "MiddleName"); Assert.AreEqual (string.Empty, contact.NamePrefix, "NamePrefix"); Assert.AreEqual (string.Empty, contact.NameSuffix, "NameSuffix"); Assert.AreEqual (string.Empty, contact.Nickname, "Nickname"); Assert.IsNull (contact.NonGregorianBirthday, "NonGregorianBirthday"); Assert.AreEqual (string.Empty, contact.Note, "Note"); Assert.AreEqual (string.Empty, contact.OrganizationName, "OrganizationName"); Assert.AreEqual (0, contact.PhoneNumbers.Length, "PhoneNumbers"); Assert.AreEqual (string.Empty, contact.PhoneticFamilyName, "PhoneticFamilyName"); Assert.AreEqual (string.Empty, contact.PhoneticGivenName, "PhoneticGivenName"); Assert.AreEqual (string.Empty, contact.PhoneticMiddleName, "PhoneticMiddleName"); Assert.AreEqual (0, contact.PostalAddresses.Length, "PostalAddresses"); Assert.AreEqual (string.Empty, contact.PreviousFamilyName, "PreviousFamilyName"); Assert.AreEqual (0, contact.SocialProfiles.Length, "SocialProfiles"); Assert.IsNull (contact.ThumbnailImageData, "ThumbnailImageData"); Assert.AreEqual (0, contact.UrlAddresses.Length, "UrlAddresses"); } }
public static Contact ToContact(this CNContact cnContact) { if (cnContact == null) { return(null); } return(new Contact { Id = cnContact.Identifier != null ? cnContact.Identifier.UTF8String : string.Empty, FirstName = cnContact.GivenName != null ? cnContact.GivenName.UTF8String : string.Empty, MiddleName = cnContact.MiddleName != null ? cnContact.MiddleName.UTF8String : string.Empty, LastName = cnContact.FamilyName != null ? cnContact.FamilyName.UTF8String : string.Empty, Company = cnContact.OrganizationName != null ? cnContact.OrganizationName.UTF8String : string.Empty, Birthday = cnContact.Birthday != null ? new DateTime?(cnContact.Birthday.ToDateTime()) : null, Emails = ToContactEmails(cnContact.EmailAddresses), PhoneNumbers = ToContactPhoneNumbers(cnContact.PhoneNumbers), loadPhotoFunc = () => { if (cnContact.ImageData == null) { return null; } UIImage image = UIImage.ImageWithData(cnContact.ImageData); return TextureUtilities.Decode(UIImage.UIImagePNGRepresentation(image.NormalizedImage)); } }); }
public void DidSelectContact(CNContactPickerViewController picker, CNContact contact) { string contactName = contact.GivenName; string message = $"Picked -> {contactName}"; Console.WriteLine(message); }
/// <summary> /// Gets contact in main thread /// !!!Not Recommended /// </summary> public IEnumerable <Contact> GetContactList(Func <Contact, bool> filter = null) { //try //{ var keysToFetch = new[] { CNContactKey.Identifier, CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.EmailAddresses, CNContactKey.PhoneNumbers, CNContactKey.ImageDataAvailable, CNContactKey.ThumbnailImageData }; NSError error; //var containerId = new CNContactStore().DefaultContainerIdentifier; // using the container id of null to get all containers. // If you want to get contacts for only a single container type, you can specify that here var contactList = new List <CNContact>(); using (var store = new CNContactStore()) { var allContainers = store.GetContainers(null, out error); foreach (var container in allContainers) { try { using (var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier)) { var containerResults = store.GetUnifiedContacts(predicate, keysToFetch, out error); contactList.AddRange(containerResults); } } catch (Exception ex) { Debug.WriteLine("\n\n\n" + ex.ToString() + "\n\n\n"); if (ex.GetType() != typeof(NullReferenceException)) { Debug.WriteLine(ex.ToString()); } continue; } } } //var contacts = new List<Contact>(); var result = new List <Contact>(); foreach (var item in contactList) { if (item.GivenName == null) { continue; } Contact _contact = new Contact(); if (filter != null && !filter(_contact)) { continue; } result.Add(_contact); } return(result); }
private static Contact CNContactToContact(CNContact cnContact) { var contact = new Contact(); contact.HonorificNamePrefix = cnContact.NamePrefix ?? string.Empty; contact.FirstName = cnContact.GivenName ?? string.Empty; contact.MiddleName = cnContact.MiddleName ?? string.Empty; contact.LastName = cnContact.FamilyName ?? string.Empty; contact.HonorificNameSuffix = cnContact.NameSuffix ?? string.Empty; if (string.IsNullOrWhiteSpace(contact.DisplayName) && !string.IsNullOrWhiteSpace(cnContact.OrganizationName)) { contact.DisplayNameOverride = cnContact.OrganizationName; } foreach (var phoneNumber in cnContact.PhoneNumbers) { if (phoneNumber != null) { contact.Phones.Add(new ContactPhone() { Number = phoneNumber.Value.StringValue ?? string.Empty, Kind = PhoneLabelToContactPhoneKind(phoneNumber.Label) }); } } foreach (var email in cnContact.EmailAddresses) { if (email != null) { contact.Emails.Add(new ContactEmail() { Address = email.Value?.ToString() ?? string.Empty, Kind = EmailLabelToContactEmailKind(email.Label) }); } } foreach (var address in cnContact.PostalAddresses) { if (address != null) { contact.Addresses.Add(new ContactAddress() { Country = address.Value.Country ?? string.Empty, PostalCode = address.Value.PostalCode ?? string.Empty, StreetAddress = address.Value.Street ?? string.Empty, Locality = address.Value.City ?? string.Empty, Region = address.Value.State ?? string.Empty, Kind = AddressLabelToContactAddressKind(address.Label) }); } } return(contact); }
void ShowNewPersonViewController() { var newContact = new CNContact(); var newContactViewController = CNContactViewController.FromNewContact(newContact); newContactViewController.Delegate = this; var navController = new UINavigationController(newContactViewController); PresentViewController(navController, true, null); }
public void DescriptorForAllComparatorKeys() { var keys = CNContact.GetDescriptorForAllComparatorKeys(); // while most input for ICNKeyDescriptor are done with NSString // the output is opaque and an internal type // note: this is not very robust - but I want to know if this changes during the next betas Assert.True(keys.Description.StartsWith("<CNAggregateKeyDescriptor:", StringComparison.Ordinal), "type"); Assert.True(keys.Description.Contains("kind=Formatter style: 1002"), "kind"); }
public async Task <IEnumerable <PhoneContact> > GetAllContacts() { //Permission if (!(await PermissionGranting())) { return(new List <PhoneContact>()); } //Contacts var keysToFetch = new[] { CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.EmailAddresses, CNContactKey.ThumbnailImageData }; //var containerId = new CNContactStore().DefaultContainerIdentifier; // using the container id of null to get all containers. // If you want to get contacts for only a single container type, you can specify that here var contactList = new List <CNContact>(); using (var store = new CNContactStore()) { var allContainers = store.GetContainers(null, out NSError error); foreach (var container in allContainers) { try { using (var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier)) { var containerResults = store.GetUnifiedContacts(predicate, keysToFetch, out error); contactList.AddRange(containerResults); } } catch (Exception e) { Console.WriteLine(e.Message); } // ignore missed contacts from errors } } var contacts = new List <PhoneContact>(); foreach (var item in contactList) { var emails = item.EmailAddresses; if (emails != null) { try { var stream = item.ThumbnailImageData?.AsStream(); contacts.Add(new PhoneContact { FirstName = item.GivenName, LastName = item.FamilyName, FullName = $"{item.GivenName} {item.FamilyName}", Email = (emails.GetLength(0) > 0) ? emails[0].Value : String.Empty, PhotoThumbnail = "ic_user"//Xamarin.Forms.ImageSource.FromStream(() => stream) }); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } return(contacts); }
IEnumerable <string> GetNumbers(CNContact contact) { var result = new List <string>(); foreach (var number in contact.PhoneNumbers) { result.Add(number?.Value?.StringValue); } return(result); }
public IEnumerable <Contact> GetContacts() { var keys = CNContactFormatter.GetDescriptorForRequiredKeys(CNContactFormatterStyle.FullName); var keysToFetch = new [] { CNContactKey.Identifier, CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.EmailAddresses, CNContactKey.PhoneNumbers, CNContactKey.ImageData, CNContactKey.ImageDataAvailable, CNContactKey.ThumbnailImageData, }; NSError error; //var containerId = new CNContactStore().DefaultContainerIdentifier; // using the container id of null to get all containers. // If you want to get contacts for only a single container type, you can specify that here var contactList = new List <CNContact> (); using (var store = new CNContactStore()) { var allContainers = store.GetContainers(null, out error); foreach (var container in allContainers) { try { using (var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier)) { var containerResults = store.GetUnifiedContacts(predicate, keysToFetch, out error); contactList.AddRange(containerResults); } } catch (Exception ex) { continue; } } foreach (var item in contactList) { if (item.GivenName == null) { continue; } var image = item.ImageDataAvailable ? CacheImage(item.ImageData) : null; var thumb = CacheImage(item.ThumbnailImageData); var formatterKey = new [] { CNContactFormatter.GetDescriptorForRequiredKeys(CNContactFormatterStyle.FullName) }; var altItem = store.GetUnifiedContact <ICNKeyDescriptor> (item.Identifier, formatterKey, out error); var contact = new Contact() { FirstName = item.GivenName, LastName = item.FamilyName, FullName = CNContactFormatter.GetStringFrom(altItem, CNContactFormatterStyle.FullName), ImagePath = image, ThumbnailPath = thumb }; contact.Numbers.AddRange(ToPhoneNumbers(item.PhoneNumbers)); yield return(contact); } } }
public IEnumerable <Contact> GetAllContacts() { var contacts = new List <Contact>(); // Define fields to be searched var fetchKeys = new NSString[] { CNContactKey.Identifier, CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.EmailAddresses, CNContactKey.Nickname, CNContactKey.ImageData, CNContactKey.PhoneNumbers }; NSError error; store = new CNContactStore(); if (CNContactStore.GetAuthorizationStatus(CNEntityType.Contacts) != CNAuthorizationStatus.Denied) { var cnContainers = store.GetContainers(null, out error); if (cnContainers != null) { foreach (var container in cnContainers) { // Create predicate to locate requested contact var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier); var cnContacts = store.GetUnifiedContacts(predicate, fetchKeys, out error); if (CNContactStore.GetAuthorizationStatus(CNEntityType.Contacts) == CNAuthorizationStatus.Authorized) { foreach (var c in cnContacts) { var con = new Contact(); con.Email = new List <string>(); foreach (var email in c.EmailAddresses) { con.Email.Add(email.ToString()); } con.PhoneNumber = new List <string>(); foreach (var phone in c.PhoneNumbers) { con.PhoneNumber.Add(phone.ToString()); } con.ID = c.Identifier; con.FirsName = c.GivenName; con.LastName = c.FamilyName; con.ImageSource = c.ImageData != null?ImageSource.FromStream(() => c.ImageData.AsStream()) : null; con.DisplayName = c.GivenName + " " + c.FamilyName; con.NickName = c.Nickname; contacts.Add(con); } } } } } return(contacts); }
public Task <List <ContactModel> > GetContactListAsync() { var contactList = new List <ContactModel>(); try { var keysToFetch = new[] { CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.PhoneNumbers }; using (var store = new CNContactStore()) { var allContainers = store.GetContainers(null, out var _); foreach (var container in allContainers) { using (var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier)) { var containerResults = store.GetUnifiedContacts(predicate, keysToFetch, out _); foreach (var contact in containerResults) { var name = string.Concat(contact.GivenName, " ", contact.FamilyName); for (var i = 0; i < contact.PhoneNumbers.Length; i++) { var number = contact.PhoneNumbers[i]; contactList.Add(new ContactModel { Name = string.Concat(name, i > 0 ? $" {i + 1}" : ""), Number = number.Value.StringValue }); } } } } } } catch (Exception e) { Debug.WriteLine($"--- Error: {e.StackTrace}"); } return(Task.FromResult(contactList)); }
public string sendMsg() { var keysToFetch = new[] { CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.PhoneNumbers }; NSError error; bool check = false; using (var store = new CNContactStore()) { var allContainers = store.GetContainers(null, out error); foreach (var container in allContainers) { try { using (var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier)) { var containerResults = store.GetUnifiedContacts(predicate, keysToFetch, out error); foreach (var item in containerResults) { var num = item.PhoneNumbers; foreach (var cn in num) { string mob = cn.Value.StringValue; if (mob == ProfileContentView.phone) { check = true; } } } } } catch { } } } if (check == false) { var store = new CNContactStore(); var contact = new CNMutableContact(); var cellPhone = new CNLabeledValue <CNPhoneNumber>(CNLabelPhoneNumberKey.Mobile, new CNPhoneNumber(ProfileContentView.phone)); var phoneNumber = new[] { cellPhone }; contact.PhoneNumbers = phoneNumber; contact.GivenName = ProfileContentView.name; var saveRequest = new CNSaveRequest(); saveRequest.AddContact(contact, store.DefaultContainerIdentifier); } return("1"); }
//======================================================================================================================================== // PUBLIC OVERRIDES //======================================================================================================================================== //======================================================================================================================================== // PUBLIC METHODS //======================================================================================================================================== /// <summary> /// Creates a list of all contacts in the users Contacts book. /// </summary> /// <returns>The fake object list context.</returns> public List <CNContact> initFakeObjectListContext() { var ContactList = new List <CNContact> (); if (access) { var predicate = CNContact.GetPredicateForContactsInContainer(store.DefaultContainerIdentifier); var keys = new NSString[] { CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.PhoneNumbers }; Foundation.NSError error; ContactList = store.GetUnifiedContacts(predicate, keys, out error).ToList(); } return(ContactList); }
IEnumerable <string> GetEmails(CNContact contact) { var result = new List <string>(); foreach (var email in contact.EmailAddresses) { var value = email?.Value?.ToString(); if (!String.IsNullOrEmpty(value)) { result.Add(value); } } return(result); }
public List <Contact> GetContactList() { var keysToFetch = new[] { CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.PhoneNumbers, CNContactKey.EmailAddresses }; NSError error; var contactList = new List <CNContact>(); using (var store = new CNContactStore()) { var allContainers = store.GetContainers(null, out error); foreach (var container in allContainers) { try { using (var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier)) { var containerResults = store.GetUnifiedContacts(predicate, keysToFetch, out error); contactList.AddRange(containerResults); } } catch (Exception) { // ignore missed contacts from errors throw; } } } var contacts = new List <Contact>(); foreach (var item in contactList) { var numbers = item.PhoneNumbers; if (numbers != null) { foreach (var item2 in numbers) { contacts.Add(new Contact { Name = item.GivenName, Number = item2.Value.StringValue, }); } } } return(contacts); }
public override void DidSelectContact(CNContactPickerViewController picker, CNContact contact) { Console.WriteLine ("Selected: {0}", contact); helper.SetSelectedName ($"{contact.GivenName} {contact.FamilyName}"); Console.WriteLine ($"Selected {contact.GivenName} {contact.FamilyName}"); }
public void DidComplete(CNContactViewController viewController, CNContact contact) { //NavigationController.PopViewController(true); DismissViewController(true, null); }
void ShowNewPersonViewController () { var newContact = new CNContact(); var newContactViewController = CNContactViewController.FromNewContact(newContact); newContactViewController.Delegate = this; var navController = new UINavigationController(newContactViewController); PresentViewController(navController, true, null); }
internal void RaiseContactSelected(CNContact contact) { if (this.ContactSelected != null) this.ContactSelected(contact); }
public override void DidSelectContact(CNContactPickerViewController picker, CNContact contact) { RaiseContactSelected(contact); }