Example #1
0
        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);
     }
 }
Example #3
0
 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");
     }
 }
Example #4
0
        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));
                }
            });
        }
Example #5
0
        public void DidSelectContact(CNContactPickerViewController picker, CNContact contact)
        {
            string contactName = contact.GivenName;
            string message     = $"Picked -> {contactName}";

            Console.WriteLine(message);
        }
Example #6
0
        /// <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);
        }
Example #7
0
        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);
        }
Example #8
0
        void ShowNewPersonViewController()
        {
            var newContact = new CNContact();
            var newContactViewController = CNContactViewController.FromNewContact(newContact);

            newContactViewController.Delegate = this;
            var navController = new UINavigationController(newContactViewController);

            PresentViewController(navController, true, null);
        }
Example #9
0
        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");
        }
Example #10
0
        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);
        }
Example #11
0
        IEnumerable <string> GetNumbers(CNContact contact)
        {
            var result = new List <string>();

            foreach (var number in contact.PhoneNumbers)
            {
                result.Add(number?.Value?.StringValue);
            }

            return(result);
        }
Example #12
0
        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);
                }
            }
        }
Example #13
0
        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);
        }
Example #14
0
        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));
        }
Example #15
0
        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);
        }
Example #17
0
        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);
        }
Example #18
0
        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 DidSelectContact(CNContactPickerViewController picker, CNContact contact)
		{
			string contactName = contact.GivenName;
			string message = $"Picked -> {contactName}";
			Console.WriteLine(message);
		}
		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);
		}
Example #23
0
 internal void RaiseContactSelected(CNContact contact)
 {
     if (this.ContactSelected != null) this.ContactSelected(contact);
 }
Example #24
0
 public override void DidSelectContact(CNContactPickerViewController picker, CNContact contact)
 {
     RaiseContactSelected(contact);
 }