的KnownContactProperties類是下Windows.Phone.PhoneContract
命名空間,但是ContactManager.RequestStoreAsync()是下Windows.ApplicationModel.Contacts命名空間。這可能是您無法獲取電話號碼的原因。 ContactStore.CreateOrOpenAsync方法Windows.Phone.PhoneContract
與KnownContactProperties一樣可以很好地工作。以下是插入聯繫人的完整演示,然後獲取聯繫人的姓名和電話號碼。
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>
代碼背後
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());
}
}
PS:我想這是能夠在8.1和10個工作... – Benjol