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

时间:2017-07-05 15:45:06

标签: c# xaml uwp launcher

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

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

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

2 个答案:

答案 0 :(得分:1)

无法控制为结果启动的窗口大小。在当前版本的Windows中,此大小硬编码为500x500。提供一种允许应用程序控制此方法的方法正在进行调查,以便将来进行更新。

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

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

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

答案 1 :(得分:1)

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

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

我认为这里的困惑之一是,大小首选项定义了当前应用所需的空间,而不是启动应用所需的大小。因为目标应用程序可以具有自己的首选项。

如果禁用“平板电脑模式”,此解决方案将不起作用,那么您将必须遵循Rob Caplan建议的解决方案。