在UWP应用程序中打开另一个UWP应用程序

5
也许是个非常奇怪的请求...
我们正在研究构建一个可以在其中打开网站和其他UWP应用程序的Windows 10 UWP应用程序。我想主要问题是...
在Windows 10 UWP中,是否有一个控件可以打开另一个UWP(像UWP的WebView一样)?
这个想法(我们还没有开始编写太多代码,因为我们目前正在“蓝图”)是拥有一个实现了SplitView(汉堡控件)的应用程序,每个按钮都会将框架更改为一个网络链接或链接到另一个UWP应用程序 - 比如Weather。
当用户点击一个选项时,就会更改主框架以访问该内容......而不离开应用程序——将其视为一个被锁定的信息亭(安全)。
我猜想并没有现成的解决方案,但还是想问一下 :)
谢谢! Matt

你可以使用适当的URI启动其他应用程序,但我认为使用官方API无法在一个应用程序中启动另一个应用程序。 - Romasz
在通用 Windows 应用程序中,只有在注册了 URI 方案或文件关联时,才能通过它们来启动应用程序。 - Fangfang Wu - MSFT
@Kandium,您可以使用参数启动其他应用程序,但是您无法在当前框架中显示其他应用程序。 - Matthias Herrmann
你可以使用Windows.Launcher来打开其他应用程序。 - Ashiq Hassan
4个回答

7

如果我理解你的意思正确,那么我认为你所寻找的并不是完全可能的。实际上,在UWP应用程序模型中,关键词是应用程序的隔离或容器化。

这并不意味着应用程序之间没有交互-- UWP应用程序模型确实允许应用程序通过基于URL的激活/通信进行交互;也许这正是您需要探索的内容。建议您从这里开始了解一些背景信息。

尽管如此,您可以设计UI来模拟其他应用程序包含在SplitView或任何容器中(对用户产生幻觉)。也就是说,不同隔间中的UI只是后台向其他应用程序进行URL通信的视图模型。


谢谢!最终我做的是构建了一个应用程序,它是一个着陆页应用程序(就像你说的模仿),有一堆瓷砖来打开其他UWP应用程序(仍在考虑动态构建这些瓷砖...)。这隐藏了下面的着陆页应用程序,这很好,因为这是为平板电脑设计的,用户可以从左侧滑动以更改关注的应用程序。仍在努力开发一些锁定安全功能... - kanthael

0

不可以,Windows 应用程序是为了保护数据而设计的。

但你可以启动另一个应用程序,任何已注册到 URI 的应用程序都可以。 以下代码来自 MSDN,展示了如何将你自己的应用程序绑定到一个 URI,然后调用它。

var options = new Windows.System.LauncherOptions();
options.PreferredApplicationPackageFamilyName= "Contoso.URIApp_8wknc82po1e";
options.PreferredApplicationDisplayName = "Contoso URI Ap";

// Launch the URI and pass in the recommended app 
// in case the user has no apps installed to handle the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriContoso, options);

0

0

如果您有App的项目,可以轻松地将其转换为库:

进入您想要嵌入的App。右键单击它的解决方案->添加新项目。

创建类库(通用Windows)。以YourAppName.Core为例进行命名。删除刚刚创建的模板*.cs文件。从YourAppName项目中选择除App.xaml、App.cs、Properties、References、TemporaryKey、Manifest和project.json以外的所有文件夹和文件,并将它们拖放到您的新库YourAppName.Core中。在每个*.xaml和*.cs文件中将名称空间从YourAppName更改为YourAppName.Core。

进入YourAppName项目。排除您移动到库中的所选文件,并在其中创建一个新页面,例如命名为MainPage。进入References,右键单击->添加新引用,然后选择YourAppName.Core。确保App.cs导航到MainPage的类型。在MainPage.xaml中插入您的库代码如下:

<Grid>
    <YourPageName that was previously in App.cs/>
</Grid>

运行您的应用程序。如果它以与之前相同的方式工作-一切都很好。

现在,转到您想要嵌入上述应用程序的主应用程序,并只是引用您的库YourAppName.Core。只需在任何您希望的XAML中使用它,或从代码后台创建实例即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接