有没有办法请求在UWP中并排打开另一个应用程序
本文关键字:另一个 应用程序 请求 UWP 有没有 | 更新日期: 2023-09-27 18:30:06
如果我想请求在顶部窗口中打开一个翻译器,请说。传递一些字符串使其进行翻译。
这可能吗?
您可以简单地使用Launcher
类为给定的URI启动默认应用程序,例如:
// The URI to launch
var uri = new Uri(@"http://stackoverflow.com/q/34740877/50447");
// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uri);
if (success)
{
// URI launched
}
else
{
// URI launch failed
}
这也支持自定义的URI方案,因此您可以使用类似ms-drive-to:?cp=40.726966~-74.006076
的URI来启动驾驶应用程序,并获得在纽约开车到该地点的路线。
同样,您可以注册自己的URI方案,以便启动。因此,如果您找不到通过URI激活处理翻译的应用程序,则可以编写自己的应用程序,可以采用形式为translate:{string}&from=en&to=es
的URI,然后从其他应用程序
我认为这个示例会对您有所帮助
单击此处:如何从另一个应用程序启动UWP应用程序
以下代码是核心:
在您的启动器应用程序中。
Uri uri = new Uri("test-launchpage1://somepath");
//if you don't use this option, the system will show a confim box when you open new app
var promptOptions = new Windows.System.LauncherOptions();
promptOptions.TreatAsUntrusted = false;
bool isSuccess = await Windows.System.Launcher.LaunchUriAsync(uri, promptOptions);
在您启动的应用程序中:
在package.appxmainfest中,您需要配置启动sechme,如下所示:
<Package>
<Applications>
<Application>
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="test-launchpage1">
<uap:DisplayName>LaunchPage1</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
</Extensions>
</Application>
</Applications>
</Package>
在已启动应用程序的应用程序中,您需要覆盖事件处理程序OnActivated
,如下所示:
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
Window.Current.Content = rootFrame;
rootFrame.NavigationFailed += OnNavigationFailed;
}
var protocolEventArgs = args as ProtocolActivatedEventArgs;
rootFrame.Navigate(typeof(MainPage), protocolEventArgs.Uri);
Window.Current.Activate();
}
}