2014-10-17 23 views
5

我試圖讓按照Quickstart: Selecting user contactsContactPicker沒有在Windows Phone的工作8.1 Silverlight的

在我的功能聯繫信息中的Windows Phone 8.1 SL應用,

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

完全一樣的功能在Windows工作電話8.1 RT。根據this reference,WP 8.1 RT和WP 8.1 SL均支持ContactPicker類。

任何想法是怎麼回事?

+0

我現在幾個小時都有同樣的問題...有關此主題的任何更新? – timtos 2014-12-15 22:54:19

+0

爲'var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();'和'IList給我'System.IO.FileNotFoundException'';和'IList contacts = await contactPicker.PickContactsAsync();' – Mangesh 2014-12-18 05:39:49

+0

遇到同樣的問題。這似乎只是框架的一些問題。點擊此處https://social.msdn.microsoft.com/Forums/windowsapps/en-US/8b8ab8a9-189a​​-40e0-8490-36a892118ee2/contactpicker-problem-in-windows-phone-81-silverlight?forum=wpdevelop – Mangesh 2014-12-18 08:46:32

回答

1

我今天在適用於Win 8.1的Universal Store應用程序中有這種行爲,所以可能會幫助您解決這個問題。雖然我有不同的例外(FileNotFoundException和只是普通的System.Exception),所以我不太確定這是同一個問題。

至於我的實驗去了,這是目前需要做出ContactPicker工作:

  • ContactPicker實例必須在UI線程創建
  • contactPicker.DesiredFieldsWithContactFieldType必須只有一個項目(0或> 1項產生除外)

這是我落得這樣做:

// 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 
} 
相關問題