1

アプリがスナップされたときにContactPickerコントラクトを使用できますか?

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=Error HRESULT E_FAIL が COM コンポーネントへの呼び出しから返されました。

ソース= mscorlib

エラーコード=-2147467259

スタック トレース: System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (タスク タスク) で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (タスク タスク) で System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() で TouchToneDtmf.MainPage.d__e .MoveNext() in d:\Users\Foo\MainPage.xaml.cs:line 556 InnerException:

4

1 に答える 1

4

アプリがスナップされているときは機能しません。ContactPicker を呼び出す前に、アプリの表示状態を確認する必要があります。

公式の C# サンプルには、このコントラクトを実装するときに役立つ、EnsureUnsnapped() メソッドもあります。

ファイル[/連絡先] ピッカーを呼び出すたびに、アプリがスナップされていないことを確認するか、アプリがスナップされている場合はスナップを解除できることを確認して、アプリがファイル[/連絡先] ピッカーを表示できることを確認する必要があります。ファイルピッカーを表示します。ソース - ファイル ピッカーを使用してファイルを保存する方法

using Windows.UI.ViewManagement;
//...
internal bool EnsureUnsnapped()
{
    bool unsnapped = ((ApplicationView.Value != ApplicationViewState.Snapped) || ApplicationView.TryUnsnap());
    return unsnapped;
}
于 2012-09-12T09:32:45.530 に答える