协议激活(uwp)

为应用程序注册协议后,可以通过URI来激活当前应用程序,并且还可以在激活应用程序的URI中附加上参数,应用程序在完成激活操作的过程中可以根据URI传递的参数来做出相应的处理。
协议URI是以协议名称开头,后面紧跟一个英文冒号。冒号后面的内容可以根据实际情况来定义,是可选的。假设某个应用程序注册了名为"topic"的协议,那么要激活该应用程序的话,可以使用Launcher类的LaunchUriAsync方法启动,传入方法参数的URI为:

topic:

带参数的URI可以这样写:

topic:12345

冒号后面的所有内容都可以视为附加参数,参数的格式没有特殊要求,因为当应用程序被激活后,该URI会被传递到应用程序中进行处理,所以对URI的分析和处理都可以由开发者自行控制。
在App类中重写的OnActivated方法中,根据方法参数的Kind属性的值来判断应用程序是否由协议URI激活。如果属性的值为ActivationKind.Protocol,则表明应用程序确实是通过协议相关的URI激活的。
下面将通过示例来演示一下如何为应用程序自定义协议信息。该示例注册一个名为"color"的协议,当通过该协议相关的URI激活应用程序后,应用程序会分析URI中所指定的的RGB颜色值,导航到一个应用页面,页面中有一个矩形,程序将使用URI传递的RGB值来填充该矩形。
App类中重写的OnActivated方法实现如下,以响应协议激活行为:

        protected override void OnActivated(IActivatedEventArgs args)
        {
   
            base.OnActivated(args);
            if (args.Kind == ActivationKind.Protocol)
            {
   
                ProtocolActivatedEventArgs protoarg = args as ProtocolActivatedEventArgs;
                //分析URI
                Uri actUri = protoarg.Uri;
                //获取查询字符串
                string q = actUri.Query;
                //去掉查询字符串前面的"?"
                q = q.Replace("?", "");
                //通过正则表达式来查找URI参数中的key -value对
                Regex r = new Regex(@"((?<key>[^&=]+)=(?<value>[^&=]+))+");
                MatchCollection matches = r.Matches(q);
                IDictionary<string, string> dic = new Dictionary<string, string>();
                //将识别出来的各组key-value对存入字典对象中
                foreach (Match match in matches)
                {
   
                    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值