我有一个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的清单中是否有一个标志,它实现了自定义协议?我在这里缺少什么?
答案 0 :(得分:1)
答案通常仅在发布问题后出现:p
设置协议时,在Package.appxmanifest的GUI中没有公开ReturnResults
属性
协议扩展中的ReturnResults属性接受以下值之一:
LaunchUriForResultsAsync
方法启动应用以获取结果,也可以使用LaunchUriAsync
启动结果。使用可选时,已启动的应用必须确定是否针对结果启动了该应用。它可以通过检查OnActivated
事件参数来做到这一点。如果参数的IActivatedEventArgs.Kind
属性返回ActivationKind.ProtocolForResults
,或者事件参数的类型为ProtocolActivatedEventArgs
,则应用程序通过LaunchUriForResultsAsync
启动。LaunchUriForResultsAsync
。LaunchUriAsync
。