【问题标题】:How can I launch another app in full screen using LaunchUriForResultAsync?如何使用 LaunchUriForResultAsync 全屏启动另一个应用程序?
【发布时间】:2017-12-09 09:20:23
【问题描述】:

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

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

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

【问题讨论】:

标签: c# xaml uwp launcher


【解决方案1】:

无法控制为结果而启动的窗口的大小。在当前版本的 Windows 中,此尺寸被硬编码为 500x500。正在研究提供一种允许应用控制这一点的方法,以备将来更新。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    我认为这里的部分困惑在于尺寸偏好定义了您当前应用所需的空间,而不是您想要启动的应用的尺寸。因为目标应用可以有自己的偏好。

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

    【讨论】:

    • 这就是我要找的。用户将需要在平板电脑模式下运行。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多