更新:添加":"在app3旁边调用它我不再得到错误,但是应用程序仍然没有启动,而是我收到一条错误消息告诉我需要一个新的应用程序来打开app3,我该如何解决这个问题?为什么我不能简单地打开应用程序?
来自其他应用app4
我尝试拨打app3
public MainPage()
{
this.InitializeComponent();
callUri();
}
private async void callUri()
{
var uriBing = new Uri(@"app3");
// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriBing);
}
但是我收到了错误消息:
System.UriFormatException: 'Invalid URI: The format of the URI could not be determined.'
我究竟做错了什么?用于URI处理的Windows文档确实如何调用自定义URI,只有他们预制的URI,我还没有看到任何其他问题。 App3包已经创建。
答案 0 :(得分:1)
如果您希望使用协议启动应用程序(它称为协议,即:yourappname://),则需要在appxmanifest声明中定义它。就像你在你的应用程序中所做的那样。然后,您可以使用您的应用名称和冒号(app://)
来调用它现在,您的应用程序在通过协议启动后将不会转到您的默认页面,您只会看到一个空白页面。您需要在App.xaml.cs中的OnActivated方法中处理它,您需要覆盖该方法并处理协议激活。
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
// Navigate to a view
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
Window.Current.Content = rootFrame;
}
// assuming you wanna go to MainPage when activated via protocol
rootFrame.Navigate(typeof(MainPage), eventArgs);
}
}
有关详情,请阅读更多here。
答案 1 :(得分:0)
在这种情况下,如果appmanifest \ declarations中的协议名称是 app3 ,则您的自定义Url应该是app3://。部署app3后,您可以通过LaunchUriAync启动它。
e.g
await LaunchUriAsync(@"app3://")
https://docs.microsoft.com/en-us/windows/uwp/launch-resume/handle-uri-activation