2014-10-17 20 views
5

tôi đã cố gắng để có được thông tin liên hệ trong Windows Phone App 8.1 SL bằng cách làm theo Quickstart: Selecting user contactsContactPicker không hoạt động trong Windows Phone 8.1 Silverlight

Trong chức năng của tôi,

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

chức năng chính xác cùng làm việc trong Windows Điện thoại 8.1 RT. Lớp ContactPicker được hỗ trợ trong cả WP 8.1 RT và WP 8.1 SL theo this reference.

Bất kỳ ý tưởng gì đang xảy ra?

+0

Tôi đang gặp vấn đề tương tự trong vài giờ ngay bây giờ ... Mọi cập nhật về chủ đề này? – timtos

+0

Cung cấp cho tôi 'System.IO.FileNotFoundException' cho' var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker(); 'và' IList contacts = await contactPicker.PickContactsAsync(); ' – Mangesh

+0

Có cùng một vấn đề. Điều này dường như chỉ là một vấn đề với khung công tác. Kiểm tra tại đây https://social.msdn.microsoft.com/Forums/windowsapps/en-US/8b8ab8a9-189a-40e0-8490-36a892118ee2/contactpicker-problem-in-windows-phone-81-silverlight?forum=wpdevelop – Mangesh

Trả lời

1

Tôi đã có hành vi này ngay hôm nay trong Ứng dụng cửa hàng toàn cầu của mình cho Win 8.1, vì vậy có thể điều này sẽ giúp bạn. Tôi đã có ngoại lệ khác nhau mặc dù (FileNotFoundException và chỉ đơn giản System.Exception), vì vậy tôi không thực sự chắc chắn đây là cùng một vấn đề.

Theo như thí nghiệm của tôi đi, đây là những gì hiện đang cần thiết để làm ContactPicker công việc:

  • ContactPicker dụ phải được tạo ra trong thread UI
  • contactPicker.DesiredFieldsWithContactFieldType phải có chính xác một mục (0 hoặc> 1 mặt hàng mang lại ngoại lệ)

Đây là những gì tôi đã kết thúc thực hiện:

// 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 
} 
Các vấn đề liên quan