首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ContactPicker在Windows 8.1 Silverlight中无法工作

ContactPicker在Windows 8.1 Silverlight中无法工作
EN

Stack Overflow用户
提问于 2014-10-17 13:42:52
回答 1查看 666关注 0票数 5

我试图在Windows 8.1SL应用程序中通过以下Quickstart:选择用户联系人获取联系人信息

在我的工作中,

代码语言:javascript
复制
    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.1RT中工作。根据ContactPicker,WP8.1RT和WP8.1SL都支持ContactPicker类。

知道怎么回事吗?

EN

回答 1

Stack Overflow用户

发布于 2015-01-14 15:39:45

我今天在我的通用商店应用程序Win 8.1中有了这种行为,所以这可能会帮助你解决问题。不过,我有不同的异常(FileNotFoundException和普通的System.Exception),所以我不确定这是同一个问题。

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

  • ContactPicker实例必须在UI线程中创建
  • contactPicker.DesiredFieldsWithContactFieldType必须有一个项(0或>1项会产生异常)

这就是我最后所做的:

代码语言:javascript
复制
// 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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26426392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档