Средство выбора контактов UWP выбирает только поля имен контактов в Windows 10 Mobile - PullRequest
0 голосов
/ 28 октября 2019

Использование средства выбора контактов в приложении UWP для выбора контакта, как описано здесь работает на ПК правильно, в то время как на мобильном устройстве оно может возвращать только поля имен (Имя, Имя, Фамилия, Полное имя), ноничто другое, например, адреса, телефоны, электронные письма и т. д.

var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
Contact contact = await contactPicker.PickContactAsync();
if (contact != null)
    {
    string xx = "";

        if (contact.Addresses.Count > 0) 
            {
                if (!String.IsNullOrEmpty(contact.Addresses[0].Country)) xx+="Country: "+ contact.Addresses[0].Country+"\n";
                if (!String.IsNullOrEmpty(contact.Addresses[0].Description)) xx+="Description: "+ contact.Addresses[0].Description+"\n";
                if (!String.IsNullOrEmpty(contact.Addresses[0].Locality)) xx+="Locality: "+ contact.Addresses[0].Locality+"\n";
                if (!String.IsNullOrEmpty(contact.Addresses[0].PostalCode)) xx+="PostalCode: "+ contact.Addresses[0].PostalCode+"\n";
                if (!String.IsNullOrEmpty(contact.Addresses[0].Region)) xx+="Region: "+ contact.Addresses[0].Region+"\n";
                if (!String.IsNullOrEmpty(contact.Addresses[0].StreetAddress)) xx+="StreetAddress: "+ contact.Addresses[0].StreetAddress+"\n";
            }
        if (!String.IsNullOrEmpty(contact.DisplayName)) xx+="DisplayName: "+ contact.Addresses[0].DisplayName+"\n";
        if (!String.IsNullOrEmpty(contact.DisplayNameOverride)) xx+="DisplayNameOverride: "+ contact.Addresses[0].DisplayNameOverride+"\n";
        if (contact.Emails.Count > 0)
            {
                if (!String.IsNullOrEmpty(contact.Emails[0].Address)) xx+="Email: "+ contact.Addresses[0].Address+"\n";
            }
        if (!String.IsNullOrEmpty(contact.FirstName)) xx+="FirstName: "+ contact.Addresses[0].FirstName+"\n";
        if (!String.IsNullOrEmpty(contact.FullName)) xx+="FullName: "+ contact.Addresses[0].FullName+"\n";
        if (!String.IsNullOrEmpty(contact.LastName)) xx+="LastName: "+ contact.Addresses[0].LastName+"\n";
        if (!String.IsNullOrEmpty(contact.MiddleName)) xx+="MiddleName: "+ contact.Addresses[0].MiddleName+"\n";
        if (!String.IsNullOrEmpty(contact.Name)) xx+="Name: "+ contact.Addresses[0].Name+"\n";
        if (!String.IsNullOrEmpty(contact.Nickname)) xx+="Nickname: "+ contact.Addresses[0].Nickname+"\n";
        if (contact.Phones.Count > 0)
            {
                if (!String.IsNullOrEmpty(contact.Phones[0].Number)) xx+="Phone: "+ contact.Addresses[0].Number+"\n";
            }

        textBlock.Text = xx;
    }

, не работает на ПК правильно и отображает данные выбранного контакта. Но при запуске на мобильном устройстве с Win 10 Mobile отображаются только имена выбранного контакта.

1 Ответ

0 голосов
/ 28 октября 2019

Я проверил код в Документе , и программное обеспечение может отображать имя контакта, адрес электронной почты, номер телефона и другую информацию.

Сравнивая с вашим кодом, я обнаружил, что выможет отсутствовать определение DesiredFieldsWithContactFieldType.

Попробуйте добавить их в свой код:

ContactPicker contactPicker = new ContactPicker();

contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Address);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);

Contact contact = await contactPicker.PickContactAsync();

После добавления ContactPicker выберет контакты, содержащие эти поля, чтобы получить информацию, которую выхочу.

С уважением.

...