【问题标题】:ContactPicker is not working in Windows Phone 8.1 SilverlightContactPicker 在 Windows Phone 8.1 Silverlight 中不起作用
【发布时间】:2014-12-13 02:50:07
【问题描述】:

我已尝试通过关注Quickstart: Selecting user contacts 在 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。根据this reference,WP 8.1 RT 和 WP 8.1 SL 都支持 ContactPicker 类。

知道发生了什么吗?

【问题讨论】:

  • 我已经有几个小时遇到同样的问题了......关于这个主题的任何更新?
  • 给我System.IO.FileNotFoundException var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();IList<Contact> contacts = await contactPicker.PickContactsAsync();
  • 遇到同样的问题。这似乎只是框架的一些问题。在这里查看social.msdn.microsoft.com/Forums/windowsapps/en-US/…
  • 这是一个错误,我将提交它。
  • 哦,好吧,我现在正在经历这种行为,距离最初的问题发布已经有一段时间了。 :(

标签: c# silverlight windows-phone-8.1 contactpicker


【解决方案1】:

我今天在适用于 Win 8.1 的 Universal Store 应用程序中出现了这种行为,所以这可能对您有所帮助。虽然我有不同的异常(FileNotFoundException 和只是普通的 System.Exception),所以我不确定这是同一个问题。

就我的实验而言,这是目前让 ContactPicker 工作所需要的:

  • 必须在 UI 线程中创建 ContactPicker 实例
  • 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多