WP8 Uri与文件关联详解
本文主要介绍了在Windows Phone 8 (Wp8) 平台上如何实现URI关联和文件关联。这两种关联对于应用程序的启动和与其他应用交互至关重要。 在WP8中,URI关联允许一个应用程序响应特定的协议或URI,使得其他应用可以启动它执行特定的任务。以下是如何设置和处理URI关联的步骤: 1. 配置WMAppManifest.xml: 在项目的`WMAppManifest.xml`文件中,你需要在 `<Tokens>` 和 `<Extensions>` 标签内添加一个 `<Protocol>` 元素,定义你的应用程序能够响应的协议名称。例如: ```xml <Extensions> <Protocol Name="wsf2" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" /> </Extensions> ``` 这里定义了一个名为 "wsf2" 的协议,当其他应用使用这个协议的URI时,你的应用会被启动,并将URI片段传递给它。 2. 实现UriMapper: 为了处理接收到的URI,你需要创建一个继承自 `UriMapperBase` 的类,例如 `MyUriMapper`,并重写 `MapUri` 方法。在这个方法中,你可以解析接收到的URI,根据需要进行转换,并返回新的URI来决定导航到哪个页面。例如: ```csharp public class MyUriMapper : UriMapperBase { public override Uri MapUri(Uri uri) { string tempUri = System.Net.HttpUtility.UrlDecode(uri.ToString()); if (tempUri.Contains("wsf2:NewNote")) { return new Uri("/MainPage.xaml", UriKind.Relative); } return uri; } } ``` 在应用程序初始化时,你需要将这个映射器设置给 `RootFrame.UriMapper`,确保所有的URI请求都会通过这个映射器处理。 3. 启动URI: 使用 `Launcher` 类的 `LaunchUriAsync` 方法,可以启动定义的协议URI,这将触发关联的应用程序。例如: ```csharp await Launcher.LaunchUriAsync(new Uri("wsf2:NewNote", UriKind.Absolute)); ``` 这行代码会尝试启动注册为处理 "wsf2" 协议的应用,并传递 "NewNote" 参数。 接下来,我们看看文件关联的实现: 1. 配置WMAppManifest.xml: 在同一份 `WMAppManifest.xml` 文件中,需要在 `<Extensions>` 标签内添加一个 `<FileTypeAssociation>` 元素,定义你的应用程序可以打开的文件类型。例如: ```xml <FileTypeAssociationName="FileAssociation" NavUriFragment="fileToken=%s" TaskID="_default"> <Logos> <Logo Size="small" IsRelative="true">Assets/ApplicationIcon.png</Logo> <Logo Size="medium" IsRelative="true">Assets/ApplicationIcon.png</Logo> <Logo Size="large" IsRelative="true">Assets/ApplicationIcon.png</Logo> </Logos> </FileTypeAssociation> ``` 这里定义了一个名为 "FileAssociation" 的文件类型关联,当用户试图打开一个与这个关联匹配的文件时,你的应用图标将显示在选择列表中。 文件关联完成后,用户可以选择你的应用打开特定类型的文件,应用会接收到一个包含文件路径的URI,可以通过解析URI获取文件信息并执行相应的操作。 通过以上步骤,你可以在WP8应用中实现URI协议和文件类型的关联,使应用能够响应外部的URI启动请求和处理特定类型的文件。这极大地扩展了应用的功能,使其可以与其他应用进行交互。在实际开发中,你可能还需要处理更多细节,比如错误处理、权限管理等,以提供更完善的用户体验。
1、在被关联程序的WMAppManifest.xml文件中的<Tokens>之后添加
<Extensions>
????? <Protocol Name="wsf2" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
??? </Extensions>
2、在被关联程序中添加类用于Uri转换
public class MyUriMaper:UriMapperBase
??? {
??????? public override Uri MapUri(Uri uri)
??????? {
??????????? string tempuri = System.Net.HttpUtility.UrlDecode(uri.ToString());
??????????? if (tempuri.Contains("wsf2:NewNote"))
??????????? {
??????????????? return new Uri("/MainPage.xaml", UriKind.Relative);
??????????? }
??????????? return uri;
??????? }
??? }
在? RootFrame.Navigated += CompleteInitializePhoneApplication;后添加RootFrame.UriMapper = new MyUriMaper();
3、在主程序中添加
await Launcher.LaunchUriAsync(new Uri("wsf2:NewNote", UriKind.Absolute));
即可实现通过此程序打开被关联程序
File关联
1、在被关联程序中添加文件关联项
</Tokens>
<Extensions>
<FileTypeAssociation Name="FileAssociation" NavUriFragment="fileToken=%s" TaskID="_default">
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦