当LaunchQuerySupportType为UriForResults时,NotSupported结果

时间:2015-09-17 22:03:09

标签: windows-10 win-universal-app uwp

我有一个UWP应用程序,我在其中定义了自定义协议。我目前正在使用LaunchUriForResultsAsync通过其他应用启动该应用并收到预期的响应而没有问题:

var options = new LauncherOptions();
options.TargetApplicationPackageFamilyName = TARGET_PACKAGE;
var launchResults = await Launcher.LaunchUriForResultsAsync(new Uri($"myprotocol:?b={cids}"), options);

但是,当我想查询我是否安装了可以处理myprotocol:的应用时,我没有得到我期望的结果。

使用LaunchQuerySupportType.Uri的第一种方法按预期返回Supported

var queryResult = await Launcher.QueryUriSupportAsync(new Uri("myprotocol:"), LaunchQuerySupportType.Uri, TARGET_PACKAGE);

使用LaunchQuerySupportType.UriForResults时,我会返回NotSupported

var queryResult = await Launcher.QueryUriSupportAsync(new Uri("myprotocol:"), LaunchQuerySupportType.UriForResults, TARGET_PACKAGE);

我的app的清单中是否有一个标志,它实现了自定义协议?我在这里缺少什么?

(见QueryUriSupportAsync

1 个答案:

答案 0 :(得分:1)

答案通常仅在发布问题后出现:p

设置协议时,在Package.appxmanifest的GUI中没有公开ReturnResults属性

协议扩展中的ReturnResults属性接受以下值之一:

  • 可选 - 可以使用LaunchUriForResultsAsync方法启动应用以获取结果,也可以使用LaunchUriAsync启动结果。使用可选时,已启动的应用必须确定是否针对结果启动了该应用。它可以通过检查OnActivated事件参数来做到这一点。如果参数的IActivatedEventArgs.Kind属性返回ActivationKind.ProtocolForResults,或者事件参数的类型为ProtocolActivatedEventArgs,则应用程序通过LaunchUriForResultsAsync启动。
  • 始终 - 只能针对结果启动应用;也就是说,它只能响应LaunchUriForResultsAsync
  • - 无法启动应用以获得结果;它只能响应LaunchUriAsync

(见How to launch an app for results