检查是否有任何应用程序可以处理 URI 方案

Check if any app can handle URI scheme

我正在创建一个 Windows Phone 8 应用程序(商店应用程序),其中我将有一些 links 供用户打开其他应用程序。 我的目标是仅隐藏或显示我拥有可以处理它们的应用程序的 link。

例如,我有一个 link 用于

mymoneyapp://user=123

另一个

mymusic://user=123

所以,如果我有一个可以处理 mymoneyapp 方案的应用程序,我希望 link 显示,否则我会隐藏它。

我发现要测试它的唯一原因是使用

LauncherOptions options = LauncherOptions();
options.FallbackUri = new Uri("http://myfallbackpage.com");
Launcher.LauncherUriAsync(new Uri("mymoneyapp://user=123"), options);

但在这种情况下,如果没有应用程序可以处理该架构,我将启动我的后备 Uri。 有没有什么方法可以测试应用程序是否可以在不实际启动的情况下启动它?

Windows Phone 上没有 API 8. Windows 10 添加 Launcher.QueryUriSupportAsync 允许在启动前检查是否有处理程序它。

https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.launcher.queryurisupportasync.aspx