博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Win10应用开发】协议-下篇:自定义多个协议
阅读量:6149 次
发布时间:2019-06-21

本文共 2008 字,大约阅读时间需要 6 分钟。

原文:

前面介绍了如何为应用程序自定义协议,于是有朋友会问,我希望为我的应用注册多个协议,不同的协议处理不同的事情,能吗?答案是能的。

方法主要在配置清单文件上,这里我给出一个例子,示例应用将注册两个协议,分别为music:和video:。

在清单文件中找到Package/Applications/Application节点,在Application元素下增加Extensions节点,表示为应用程序声明的扩展,可以包含N个uap:Extension元素,一定要加上uap前缀,表明是用于通用应用的。正是利用了uap:Extension元素这个特点,可以为应用程序定义多个协议,但是,一定要记住:一个uap:Extension元素只能声明一个协议

既然要多个协议,那就定义多个uap:Extension元素,如本例的清单文件定义如下:

Protocol元素的Name特性指定协议的名字。

接下来在App类中重写OnActivated方法,主要是从参数中取出激活应用程序的URI,再判断应用程序是被哪个协议激活的。

protected override void OnActivated(IActivatedEventArgs args)        {            if (args.Kind == ActivationKind.Protocol)            {                ProtocolActivatedEventArgs parg = (ProtocolActivatedEventArgs)args;                Uri uri = parg.Uri;                string data = null;                // 判断是哪个协议激活                switch (uri.Scheme)                {                    case "music":                        data = "音乐";                        break;                    case "video":                        data = "视频";                        break;                    default:                        data = null;                        break;                }                // 显示页面                Frame rootframe = Window.Current.Content as Frame;                if (rootframe == null)                {                    rootframe = new Frame();                    Window.Current.Content = rootframe;                }                rootframe.Navigate(typeof(MainPage), data);            }            Window.Current.Activate();        }

 args.Kind的值很关键,因为应用程序可能被其他方式激活,如文件关联,所以这里必须判断。取得URI后,Scheme属性可以得到URI的架构名,即协议的名字,如上面定义的music、video。进而判断哪个协议激活了应用。

 

下面再写一个示例应用,用来通过协议激活上面的应用,在代码中可以用Launcher类的LaunchUriAsync方法来启动一个URI。

Uri uri = new Uri(txt1.Text);            await Windows.System.Launcher.LaunchUriAsync(uri);

测试结果如下图所示。

注意,在使用协议时,协议名称后面一定要加上冒号(英文),如music:。

 

示例下载地址:http://files.cnblogs.com/files/tcjiaan/protocol-part2.zip

 

转载地址:http://jxqya.baihongyu.com/

你可能感兴趣的文章
嵌入式,代码调试----GDB扫盲
查看>>
类斐波那契数列的奇妙性质
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
代码描述10313 - Pay the Price
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
vb sendmessage 详解1
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>