Windows runtime 在捕捉时使用ContactPicker合同

Windows runtime 在捕捉时使用ContactPicker合同,windows-runtime,winrt-xaml,Windows Runtime,Winrt Xaml,当应用程序被抓拍时,我可以使用合同吗 var picker = new Windows.ApplicationModel.Contacts.ContactPicker(); picker.CommitButtonText = "Select"; picker.SelectionMode = Windows.ApplicationModel.Contacts.ContactSelectionMode.Fields; picker.DesiredFields.Add(Windows.Applicat

当应用程序被抓拍时,我可以使用合同吗

var picker = new Windows.ApplicationModel.Contacts.ContactPicker();
picker.CommitButtonText = "Select";
picker.SelectionMode = Windows.ApplicationModel.Contacts.ContactSelectionMode.Fields;
picker.DesiredFields.Add(Windows.ApplicationModel.Contacts.KnownContactField.Email);
var contactInformation = await picker.PickSingleContactAsync();
上面的代码在全屏显示时可以工作,但在屏幕一侧捕捉到PickSingleContactAsync()调用时引发以下异常:

用户代码未处理System.Runtime.InteropServices.COMException

HResult=-2147467259

Message=调用COM组件返回错误HRESULT E_FAIL

Source=mscorlib

错误代码=-2147467259

堆栈跟踪: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()中 在TouchToneDtmf.MainPage.d__e.MoveNext()上 在里面 d:\Users\Foo\MainPage.xaml.cs:line 556内部异常:


当应用程序被抓拍时,它不工作-在调用ContactPicker之前,您应该检查应用程序的视觉状态

在官方的C#示例中,还有一个方法EnsureUnsnaped(),您可能会发现它在执行此合同时很有用

每次打电话给文件采集器[/contact]时,必须首先确保 应用程序可以通过验证您的应用程序是否未快照来显示文件[/contact]选取器 或者,如果您的应用程序被抓拍,则可以取消抓拍以显示 文件选择器


当应用程序被抓拍时,它不工作-在调用ContactPicker之前,您应该检查应用程序的视觉状态

在官方的C#示例中,还有一个方法EnsureUnsnaped(),您可能会发现它在执行此合同时很有用

每次打电话给文件采集器[/contact]时,必须首先确保 应用程序可以通过验证您的应用程序是否未快照来显示文件[/contact]选取器 或者,如果您的应用程序被抓拍,则可以取消抓拍以显示 文件选择器

using Windows.UI.ViewManagement;
//...
internal bool EnsureUnsnapped()
{
    bool unsnapped = ((ApplicationView.Value != ApplicationViewState.Snapped) || ApplicationView.TryUnsnap());
    return unsnapped;
}