如何使用 LaunchUriForResultAsync 在全屏模式下启动另一个应用程序?

How can I launch another app in full screen using LaunchUriForResultAsync?

我想使用 LaunchUriForResultAsync 来启动我的其他应用程序并从中获取一些结果。但我想全屏启动另一个应用程序,如果这不可能,也许只是以更大的尺寸启动它。

当我使用 LaunchUriForResultAsync 启动另一个应用程序时,模态应用程序以 500x500 大小启动。我需要比这更大的东西,因为我需要创建一个需要更多 space 的数据输入应用程序,多个应用程序可以启动。我试图将 DesiredRemainingViewPreferredLaunchWindowingMode 设置为 FullScreen .它没有让我的其他应用程序以全屏模式启动。

有没有一种方法可以使用 LaunchUriForResultAsync 来全屏启动我的其他应用程序?

无法控制为结果启动的 window 的大小。在 Windows 的当前版本中,此尺寸被硬编码为 500x500。正在研究提供一种允许应用程序控制此功能的方法,以便将来进行更新。

由于您控制这两个应用程序,因此您可以编写自定义系统来管理通信,而不是使用 LaunchUriForResultAsync。 AppA 和 AppB 可以各自定义自己的协议(appa: 和 appb:)。 AppA 可以 LaunchUriAsync appb: 做任何它需要的事情,然后 AppB 可以 LaunchUriAsync appa: 传递结果。将 AppA 的 return URL 作为参数传递给 appb: 并且可以从多个应用程序调用它。

最棘手的部分可能是管理模态。在等待时禁用 AppA 的页面很容易,但在初始启动后 link AppB 的 window 更难到 AppA 的页面。在我的脑海中,我只是重新启动 appb: 并确保 appb: 可以正常跟踪和处理多次启动。

这或多或少就是 LaunchUriForResultAsync 为您所做的。

如果设备处于平板电脑模式,您可以使用ViewSizePreference.SizeNone,应用程序将全屏启动:

var options = new Windows.System.LauncherOptions();
options.DesiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.UseNone;
await Windows.System.Launcher.LaunchUriAsync(uri, options);

我认为这里的部分混淆是大小首选项定义了 space 您当前的应用程序所需的大小,而不是您希望启动的应用程序的大小。因为目标应用可以有自己的偏好。

如果禁用平板电脑模式,此解决方案将不起作用,那么您将不得不采用 Rob Caplan 建议的解决方案。