我怎么使用
await Windows.System.Launcher.LaunchUriAsync(new Uri("protocol://"));
导航到uwp应用程序的特定视图。 如果某个应用程序被最小化或隐藏在其他应用程序的后面,是否可以将其显示在屏幕前?
预先感谢
答案 0 :(得分:1)
如何使用
await Windows.System.Launcher.LaunchUriAsync(new Uri("protocol://"));
导航到uwp应用程序的特定视图
为此,首先需要在 Package.appxmanifest 文件中添加 Protocol 声明。 (转到“声明”标签,然后从可用协议中添加协议)。 (MSDN Doc)
在这里,我使用“ app-protocol ”作为协议名称。
完成此操作后,您需要在 App.xaml.cs 中覆盖OnActivated()方法。使用协议启动应用程序时,将调用此方法。 可以在此处检索调用协议时传递的参数,并根据该参数可以显示页面,也可以将该参数传递给页面并让其处理导航。
例如,如果我们的Uri是app-protocol:login?param1=true
,则当您通过ProtocolActivatedEventArgs eventArgs
方法收到onActivated()
时,您将可以访问整个Uri。
您可以使用eventArgs.Uri
访问所有Uri属性。
无论如何,您的代码应如下所示:
C#
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
// Get the root frame
Frame rootFrame = Window.Current.Content as Frame;
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame == null)
{
// Create a Frame to act as the navigation context and navigate to the first page
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: Load state from previously suspended application
}
// Place the frame in the current Window
Window.Current.Content = rootFrame;
}
//URI : app-protocol:login?param1=true
//Logic for showing different pages/views based on parameters passed
if (eventArgs.Uri.PathAndQuery != string.Empty)//PathAndQuery:login?param1=true
{
var absolutePath = eventArgs.Uri.AbsolutePath;//AbsolutePath:login
if (absolutePath.Equals("login"))
{
rootFrame.Navigate(typeof(LoginPage));
}
else
{
rootFrame.Navigate(typeof(MainPage));
}
}
else
{
rootFrame.Navigate(typeof(MainPage));
}
}
// Ensure the current window is active
Window.Current.Activate();
}
如果将某个应用程序最小化或隐藏在其他应用程序之后,是否可以将其显示在屏幕前?
我们正在致电Window.Current.Activate();
来确保这一点。