2016-08-30 7 views
7

Von meiner App aus erstelle ich Kontakte unter Verwendung StoredContact und die ContactStore, die Handy-Nummer unter Verwendung KnwonContactProperties.MobileTelephone über .Wie schreibe ich in ContactStore.Contact.Phones?

Das ist in Ordnung, und ich kann die Handynummer in People sehen.

Aber ...

Wenn ich versuche, über ContactManager.RequestStoreAsync die Kontakte programmatisch zuzugreifen, ich in der contact.Phones Sammlung nicht sehen diese Telefonnummer tun.

Gibt es eine Möglichkeit, Zahlen in die Phones-Sammlung zu schreiben?

(Related question)

+0

PS: Ich möchte diese in der Lage sein, arbeiten auf 8.1 und 10 ... – Benjol

Antwort

1

Die KnownContactProperties Klasse ist in unter Windows.Phone.PhoneContract Namespace, aber ContactManager.RequestStoreAsync() ist unter Windows.ApplicationModel.Contacts Namespace. Es kann der Grund sein, warum Sie die Telefonnummern nicht erhalten können. ContactStore.CreateOrOpenAsync Methode unter Windows.Phone.PhoneContract gleichen mit KnownContactProperties kann gut funktionieren. Hier ist eine abgeschlossene Demo zum Einfügen eines Kontakts und dann erhalten Sie den Namen und die Telefonnummer des Kontakts.

XAML-Code

<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> 

-Code hinter

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

Hm, danke für den Versuch. Leider muss ich das Gegenteil tun: in der Lage sein, zu 'Windows.ApplicationModel.Contacts' zu schreiben, oder zumindest etwas in die' .Phones' Eigenschaft des Contact zu finden. Der Grund ist, dass (soweit ich das beurteilen kann) * das * ist, wo WhatsApp sucht, und ich möchte, dass WhatsApp die Kontakte erkennen kann, die meine App erstellt ... – Benjol

+0

Haben Sie dieses offizielle Beispiel überprüft: https: //github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ContactCardIntegration. Dieses Beispiel enthält Code zum Schreiben von Kontakten zu 'windows.ApplicationModel.Contacts', hatten Sie Probleme bei der Verwendung? Es verwendet [Kontakttelefonklasse] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.contacts.contactphone) –

+0

Eigentlich denke ich, dass ich dich möglicherweise missverstehen kann. Sie legen die Telefoneigenschaft mit 'KnwonContactProperties.MobileTelephone' fest, das von 'Windows.Phone.PhoneContract' kommt. Aber jetzt haben Sie gesagt, dass Sie die Telefon-Eigenschaft mit 'windows.ApplicationModel.Contacts' einstellen wollen. Hast du meinen Code getestet? Der Code listet die von der App erstellten Kontakte auf. –