在WP时代,可以通过在WMAppManifest.xml文件中添加

<Protocol Name="protocolName" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />

来实现Protocol启动应用,在UWP中同样也可以通过类似的方法来启动应用。

 

1、直接修改Package.appxmanifest文件

在<Applications>节点下添加<Extensions>节点,在<Extensions>节点下添加

<uap:Extension Category="windows.protocol" >
<uap:Protocol Name="protocolname">
<uap:Logo>Assets\StoreLogo.png</uap:Logo>
<uap:DisplayName>应用名称</uap:DisplayName>
</uap:Protocol>
</uap:Extension>

节点即可实现Protocol启动应用。注意:Protocol 的Name必需为小写

其中Logo、Name是当有多个应用注册了这个协议时供用户选择使用哪一个应用来启动。

2、使用可视化界面添加

直接双击Package.appxmanifest文件。在Declarations下添加Protocol Declaration

UWP 外部使用Protocol协议来启动应用

输入所需要的Protocol信息即可

UWP 外部使用Protocol协议来启动应用

3、获取Protocol启动信息

当外界通过Protocol启动应用时,如访问某个地址

protocolname://appdata

系统会自动启动注册了protocolname协议的应用

此时在App.xaml.cs文件中,重写OnActivate方法,通过Protocol协议启动的应用,ActivationKind问Protocol,可将args强制转换为ProtocolActivatedEventArgs来获取启动信息。

        protected async override void OnActivated(IActivatedEventArgs args)
        {
            base.OnActivated(args);
 
            switch (args.Kind)
            {
                case ActivationKind.VoiceCommand:
                    {
                        break;
                    }
                case ActivationKind.Protocol:
                    {
                        var command = args as ProtocolActivatedEventArgs;
                      
                        if (command.Uri.ToString().StartsWith("protocolname://"))
                        {
                            InternalJumper.initNoticeUrl(command.Uri.ToString());
                        }
                        else
                        {
                          //.....
                        }
                        break;
                    }
            }
        }

 

分类:

技术点:

相关文章: