次の方法を使用して、WinRTでロック画面アクセスを要求します。
public async void RequestLockScreenAccess()
{
var status = BackgroundExecutionManager.GetAccessStatus();
if (status == BackgroundAccessStatus.Unspecified || status == BackgroundAccessStatus.Denied)
status = await BackgroundExecutionManager.RequestAccessAsync();
switch (status)
{
case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:
_mainInfo.NotifyUser = "This app is on the lock screen and has access to Always-On Real Time Connectivity.";
break;
case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:
_mainInfo.NotifyUser = "This app is on the lock screen and has access to Active Real Time Connectivity.";
break;
case BackgroundAccessStatus.Denied:
_mainInfo.NotifyUser = "This app is not on the lock screen.";
break;
case BackgroundAccessStatus.Unspecified:
_mainInfo.NotifyUser = "The user has not yet taken any action. This is the default setting and the app is not on the lock screen.";
break;
}
}
これにより、2つの異なるエラーが発生する可能性があります。オンラインの前またはオンラインにブレークポイントを配置した場合
status = await BackgroundExecutionManager.RequestAccessAsync();
コードは実行されますが、次の例外がスローされます。
タイプ'System.Exception'の未処理の例外がmscorlib.dllで発生しました追加情報:要素が見つかりません。(HRESULTからの例外:0x8002802B(TYPE_E_ELEMENTNOTFOUND))
別の投稿で読んだように、これは他の人に知られているバグであり、Microsoftについては知りません。この行の前にブレークポイントを配置しないと、代わりに実行がハングします。私はここで何が間違っているのですか?
アプリケーションをアンインストールすると機能するようですが、再実行すると最終的には再び失敗します。