5

我尝试按照快速入门在 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 Phone 8.1 RT。ContactPicker根据此参考,WP 8.1 RT 和 WP 8.1 SL 都支持类。

知道发生了什么吗?

4

1 回答 1

1

我今天在我的 Win 8.1 通用商店应用程序中出现了这种行为,所以这可能会对你有所帮助。虽然我有不同的异常(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
}
于 2015-01-14T15:39:45.280 回答