c# windows-phone-8.1 uwp windows-10-mobile

c# - ¿Cómo escribir en ContactStore.Contact.Phones?



windows-phone-8.1 uwp (1)

La clase KnownContactProperties se encuentra en el espacio de nombres Windows.Phone.PhoneContract , pero ContactManager.RequestStoreAsync () está en el espacio de nombres Windows.ApplicationModel.Contacts. Puede ser la razón por la que no puede obtener los números de teléfono. El método ContactStore.CreateOrOpenAsync en Windows.Phone.PhoneContract con las propiedades de contacto conocido puede funcionar bien. Aquí hay una demostración completa para insertar un contacto y luego obtener el nombre y el número de teléfono del contacto.

Código XAML

<StackPanel> <TextBox x:Name="txtName" Header="name" InputScope="NameOrPhoneNumber"/> <TextBox x:Name="txtTel" Header="phone number 1" InputScope="ChineseHalfWidth"/> <TextBox x:Name="txtTel1" Header="phone number 2" InputScope="TelephoneNumber"/> <Button x:Name="btnSave" Content="Save" Click="btnSave_Click"/> <Button x:Name="btnGet" Content="GET" Click="btnGet_Click"/> </StackPanel>

Código detrás

private async void btnSave_Click(object sender, RoutedEventArgs e) { var name = txtName.Text; var tel = txtTel.Text; ContactStore contactStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); ContactInformation contactInformation = new ContactInformation(); contactInformation.DisplayName = name; var contactProps = await contactInformation.GetPropertiesAsync(); contactProps.Add(KnownContactProperties.MobileTelephone, tel); StoredContact storedContact = new StoredContact(contactStore, contactInformation); await storedContact.SaveAsync(); } private async void btnGet_Click(object sender, RoutedEventArgs e) { ContactStore contactStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); var result = contactStore.CreateContactQuery(); var count = await result.GetContactCountAsync(); var list = await result.GetContactsAsync(); foreach (var item in list) { var properties = await item.GetPropertiesAsync(); System.Diagnostics.Debug.WriteLine(item.DisplayName); System.Diagnostics.Debug.WriteLine(properties[KnownContactProperties.MobileTelephone].ToString()); } }

Desde mi aplicación, creo contactos usando StoredContact y ContactStore , estableciendo el número de teléfono móvil usando KnwonContactProperties.MobileTelephone través de GetPropertiesAsync .

Esto está bien, y puedo ver el número de teléfono móvil en Personas.

Pero...

Si trato de acceder a los contactos programáticamente a través de ContactManager.RequestStoreAsync , no veo este número de teléfono en el contacto. Colección de teléfonos.

¿Hay alguna manera de obtener números escritos en la colección de teléfonos?

( Pregunta relacionada )