2016-08-30 18 views
7

在我的應用程序中,我使用StoredContactContactStore創建聯繫人,使用KnwonContactProperties.MobileTelephone通過GetPropertiesAsync設置手機號碼。如何寫信給ContactStore.Contact.Phones?

這很好,我可以在People中看到手機號碼。

但是......

如果我試圖通過編程來ContactManager.RequestStoreAsync訪問聯繫人,我看到contact.Phones收集這個電話號碼。

有沒有辦法讓數字寫入Phones集合?

Related question

+0

PS:我想這是能夠在8.1和10個工作... – Benjol

回答

1

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()); 
    } 
} 
+0

嗯,爲努力表示感謝。不幸的是,我需要做的是相反的:能夠寫入'Windows.ApplicationModel.Contacts',或者至少找到寫入Contact的'.Phones'屬性的地方。原因是(據我所知)*那*是WhatsApp正在查找的地方,我希望WhatsApp能夠檢測到我的應用程序正在創建的聯繫人... – Benjol

+0

您是否檢查了此官方示例:https: //github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ContactCardIntegration。這個例子有關於寫聯繫到'windows.ApplicationModel.Contacts'的代碼,使用它時有問題嗎?它使用[contactphone類](https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.contacts.contactphone) –

+0

其實我想我可能會誤解你。您可以使用來自'Windows.Phone.PhoneContract'的'KnwonContactProperties.MobileTelephone'設置手機屬性。但是現在你說你想用'windows.ApplicationModel.Contacts'設置手機屬性。你有沒有測試我的代碼?代碼列出了應用程序創建的聯繫人。 –