ContactPicker无法在Windows Phone 8.1 Silverlight中工作
本文关键字:Silverlight 工作 Phone Windows ContactPicker | 更新日期: 2023-09-27 18:27:03
我试图通过以下快速启动在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中工作。根据此参考,WP 8.1 RT和WP 8.1 SL都支持ContactPicker
类。
知道发生了什么事吗?
我今天在我的Win 8.1通用商店应用程序中出现了这种行为,所以这可能会帮助你。不过,我有不同的异常(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
}