2014-10-17 20 views
5

Ho cercato di ottenere informazioni di contatto in Windows Phone 8.1 SL applicazione seguendo Quickstart: Selecting user contactsContactPicker non funziona in Windows Phone 8.1 di Silverlight

Nella mia funzione,

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) 
     { ... } 
    } 

esatta stessa funzione funziona in Windows Telefono 8.1 RT. La classe ContactPicker è supportata in WP 8.1 RT e WP 8.1 SL in base a this reference.

Qualche idea su cosa sta succedendo?

+0

Sto avendo lo stesso problema per qualche ora ... Qualche aggiornamento su questo argomento? – timtos

+0

Mi dà 'System.IO.FileNotFoundException' per' var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker(); 'e' IList contacts = attendi contactPicker.PickContactsAsync(); ' – Mangesh

+0

Avendo lo stesso problema. Questo sembra essere un problema solo con il framework. Controlla qui https://social.msdn.microsoft.com/Forums/windowsapps/en-US/8b8ab8a9-189a-40e0-8490-36a892118ee2/contactpicker-problem-in-windows-phone-81-silverlight?forum=wpdevelop – Mangesh

risposta

1

Ho avuto questo comportamento oggi nella mia app Universal Store per Win 8.1, quindi potrebbe essere questo ti aiuta. Avevo però diverse eccezioni (FileNotFoundException e semplicemente System.Exception), quindi non sono sicuro che sia lo stesso problema.

Per quanto riguarda i miei esperimenti andare, questo è ciò che è attualmente necessari per far funzionare ContactPicker:

  • esempio ContactPicker deve essere creato nel thread UI
  • contactPicker.DesiredFieldsWithContactFieldType deve avere esattamente un elemento (0 o> 1 articoli resa eccezione)

Questo è quello che ho finito per fare:

// 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 
} 
Problemi correlati