2014-10-17 64 views
5

Próbowałem uzyskać informacje kontaktowe w Windows Phone 8.1 SL aplikacji wykonując Quickstart: Selecting user contactsContactPicker nie działa w Windows Phone 8.1 Silverlight

W mojej funkcji,

private async void PickAContactButton_Click(object sender, RoutedEventArgs e) 
    { 
     var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker(); 
     contactPicker.desiredFieldsWithContactFieldType.add(Windows.ApplicationModel.Contacts.ContactFieldType.email); 
     Contact contact = await contactPicker.PickContactAsync(); // this throws System.NotImplementedException 
     // Additional information: The method or operation is not implemented. 

     if (contact != null) 
     { ... } 
    } 

Dokładne sama funkcja działa w systemie Windows Telefon 8.1 RT. Klasa ContactPicker jest obsługiwana w wersjach WP 8.1 RT i WP 8.1 SL zgodnie z this reference.

Każdy pomysł, co się dzieje?

+0

Mam ten sam problem przez kilka godzin ... Wszelkie aktualizacje na ten temat? – timtos

+0

Daje mi 'System.IO.FileNotFoundException' dla' var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker(); 'i' IList kontakty = czeka na contactPicker.PickContactsAsync(); ' – Mangesh

+0

Mając ten sam problem. Wydaje się, że jest to tylko problem z ramami. Sprawdź tutaj: https://social.msdn.microsoft.com/Forums/windowsapps/en-US/8b8ab8a9-189a-40e0-8490-36a892118ee2/contactpicker-problem-in-windows-phone-81-silverlight?forum=wpdevelop – Mangesh

Odpowiedz

1

Miałem takie zachowanie dzisiaj w mojej aplikacji Universal Store dla Win 8.1, więc może to ci pomóc. Miałem jednak różne wyjątki (FileNotFoundException i po prostu System.Exception), więc nie jestem pewien, czy to ten sam problem.

Jeśli chodzi o moje eksperymenty iść, to jest to, co jest aktualnie potrzebne do pracy ContactPicker:

  • instancja ContactPicker muszą być tworzone w wątku UI
  • contactPicker.DesiredFieldsWithContactFieldType musi mieć dokładnie jeden element (0 lub> 1 pozycji uzyskując wyjątek)

to, co skończyło się robi:

// using Windows.ApplicationModel.Core; 

// in an async method: 
Contact user = null; 
AutoResetEvent resetEvent = new AutoResetEvent(false); 
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
    CoreDispatcherPriority.Normal, 
    (async()=>{ 
     ContactPicker contactPicker = new ContactPicker(); 
     contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber); 
     user = await contactPicker.PickContactAsync(); 
     resetEvent.Set(); 
    } 
); 
resetEvent.WaitOne(); 
if (user != null) { 
    // do smth 
}