需要被其他应用启动的第三方应用需要注册protocol association,当一个应用程序启动一个特殊的URI的时候,那么注册了这个protocol的程序会自动启动,并且可以通过这个特殊的URI将参数传递到第三方应用中。

第三方应用程序注册protocol association步骤

  Windows Phone 8 和 Windows 8 注册方式有一些差异,下面分别说明注册方式。

Windows Phone 8第三方应用程序注册Protocol

  1.修改WPAppManifest.xaml文件

  在</Token>后面添加类似如下代码:

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

  MSDN关于Protocol标签的说明参考:Windows Phone 的应用清单文件

  Protocol 元素是 Extensions 元素的子元素,始终应该跟在所有 FileTypeAssociation 元素后面。Protocol 元素说明了应用注册的 URI 方案名称,使其可以在另一个应用启动某个特定 URI 时启动。有关更多信息,请参见 使用 Windows Phone 8 文件和 URI 关联的自动启动应用

属性

类型

说明

Name

String

自定义的 URI 方案的前缀。包含数字、小写字母、句点 (‘.’) 或连字符 (‘-’) 且长度介于 2 和 39 个字符的字符串。不包含冒号 (‘:’)或任何在 URI 中的前缀后面的内容。

NavUriFragment

String

始终设置为   encodedLaunchUri=%s。

TaskID

String

始终设置为   _default。

  2.添加URI请求解析处理程序

  传人程序的UIR格式为:/Protocol?encodedLaunchUri={传人的URI},为了使程序能够正确解析传人的URI,需要为工程添加AssociationUriMapper类,代码如下:

     /// <summary>
/// 解析第三方应用调用参数
/// </summary>
class AssociationUriMapper : UriMapperBase
{
private string tempUri; public override Uri MapUri(Uri uri)
{
tempUri = uri.ToString(); // Protocol association launch for contoso.
if (tempUri.Contains("/Protocol"))
{
int pos = tempUri.IndexOf("encodedLaunchUri");
String encodedString = tempUri;
if (pos >= )
{
encodedString = tempUri.Substring(pos);
}
return new Uri("/MainPage.xaml?" + encodedString, UriKind.Relative);
} // Include the original URI with the mapping to the main page.
return new Uri("/MainPage.xaml", UriKind.Relative);
}
}

  3.修改App.xaml.cs文件的InitializePhoneApplication,添加:

             // Assign the URI-mapper class to the application frame.
RootFrame.UriMapper = new AssociationUriMapper();

  4.修改MainPage.xaml.cs文件,添加提示框,弹出传人的URI,代码如下:

         protected override async void OnNavigatedTo(NavigationEventArgs e)
{
//解析第三方应用调用参数
if (NavigationContext.QueryString.ContainsKey("encodedLaunchUri"))
{
String launchuri = NavigationContext.QueryString["encodedLaunchUri"];
MessageBox.Show(launchuri);
//launchuri为传人的URI,解析并保存传人的参数
//-----TO DO--------------
}
}

Windows 8第三方应用程序注册Protocol

  1.修改Package.appxmanifest文件

  找到<Application>标签的子标签<Extensions>,如果不存在,则添加一个。为<Extensions>添加子标签:

 <Extension Category="windows.protocol">
<Protocol Name="testapp" />
</Extension>

  2.修改App.xaml.cs文件,添加如下代码

         protected override void OnActivated(IActivatedEventArgs args)
{
base.OnActivated(args); //第三方应用调用处理
if (args.Kind == ActivationKind.Protocol)
{
var protocolArgs = args as ProtocolActivatedEventArgs;
String uristring = protocolArgs.Uri.AbsoluteUri;
//uristring为传人的URI,解析并保存传人的参数
//-----TO DO--------------
}
Window.Current.Activate();
}

第三方应用调用方式  

  Windows Phone 8 和 Windows 8 调用方式相同,格式为:testapp:xxxxxxxxx,其中:testapp为注册Protocol的name。实例代码如下:

Windows.System.Launcher.LaunchUriAsync(new Uri("testapp://type/?param1=value1&param2=value2&param3=value3 "));

  

Windows Phone 8/Windows 8 启动第三方应用程序并传递参数的更多相关文章

  1. 如何在Android中的Activity启动第三方应用程序?

    如何在点击某个按键后,执行启动第三方应用程序界面? /** * <功能描述> 启动应用程序 * * @return void [返回类型说明] */ private void startU ...

  2. Android启动第三方应用程序

    主要是开始通过包名的第三方应用程序,获取的方法的包名是非常在线.不是说. 两种方式启动: 第一: Intent intent = new Intent(); intent.setClassName(& ...

  3. Android: 启动另外的APP及传递参数(转)

    转载自:http://blog.csdn.net/iefreer/article/details/8812585 有时候需要从一个APP中启动另外一个APP,比如Twitter/微信等. 如果你不知道 ...

  4. Windows server 2008 R2 如何启动任务计划程序

    使用windows server 2008 R2  的任务计划程序需要启动服务 Task Scheduler 服务, windows server 2008 R2 默认状态下Task Schedule ...

  5. 安卓入门 使用android创建一个项目 从启动activity中响应按钮事件 启动另一个activity 并传递参数

    启动android studio创建一个新项目 public void sendMessage(View view){ Intent intent=new Intent(this,DispalyMes ...

  6. 【WP8】Uri关联启动第三方App

    在WP8中支持启动第三方应用程序,比如在App1中可以打开App2,你可以在你的应用程序中直接打开QQ,也可以让其他开发者调用你的APP,例如:软件盒子 下面演示被调用方和调用方的使用方法,新建两个项 ...

  7. Windows 2003 Server 标准版启动问题解决(资源转贴)

    维护的系统之一是部署在windows2003 Server标准版的服务器上,可能是由于某个应用问题,导致远程重启失败,害得我在机房呆了一早晨,可算是够折腾的.最后按照官方文档解决,刚放文档地址是:ht ...

  8. windows下postgreSQL安装与启动

    转:https://www.yiibai.com/postgresql/install-postgresql.html https://blog.csdn.net/irainreally/articl ...

  9. 玩转Windows服务系列——Windows服务启动超时时间

    最近有客户反映,机房出现断电情况,服务器的系统重新启动后,数据库服务自启动失败.第一次遇到这种情况,为了查看是不是断电情况导致数据库文件损坏,从客户的服务器拿到数据库的日志,进行分析. 数据库工作机制 ...

随机推荐

  1. Fibsieve`s Fantabulous Birthday LightOJ - 1008(找规律。。)

    Description 某只同学在生日宴上得到了一个N×N玻璃棋盘,每个单元格都有灯.每一秒钟棋盘会有一个单元格被点亮然后熄灭.棋盘中的单元格将以图中所示的顺序点亮.每个单元格上标记的是它在第几秒被点 ...

  2. 【BZOJ4817】树点涂色(LCT,线段树,树链剖分)

    [BZOJ4817]树点涂色(LCT,线段树,树链剖分) 题面 BZOJ Description Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义 ...

  3. NOIP2017结束了

    NOIP 2017 两天T1总分80 D1T3爆零 学军数据255 洛谷数据270 大概连1=都没有吧 没有预料到的结果 想了很久 最后只能选择接受 看完成绩单 高二爷们也许只剩下CYC LLQ ZS ...

  4. ps裁剪一寸照片及换背景色

    1.打开ps,把图片拖进去编辑 2.选魔棒工具,在途中选中背景色,鼠标右键,选选择反向 效果如下: 3.按 快捷键 ctrl + j  可以在右侧看到新建出了一个图层 4.选文件,新建,填写长宽,如果 ...

  5. STL源码分析-iterator

    http://note.youdao.com/noteshare?id=4efcb6441063dae956c226f91c161897

  6. vim 单文件中查找方法

    1.vim 单文件中查找方法 正常模式下使用 / 或 ? 命令执行向后搜索或向前搜索 /love   从光标位置向前搜索关键词 love ?love   从光标位置向后搜索关键词 love 正常模式下 ...

  7. Jenkins基于角色的项目权限管理

    参考博客:http://www.cnblogs.com/davidwang456/p/3701972.html 一.简介 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三 ...

  8. 解决SQL Server 2008 64位系统无法导入Access/Excel的问题

    最近更换了新服务器,操作系统Windows Server 2008 X64,数据库SQL Server 2008 X64,Office 2007(好像只有32位),在存储过程执行OpenDatasou ...

  9. [DeeplearningAI笔记]序列模型2.6Word2Vec/Skip-grams/hierarchical softmax classifier 分级softmax 分类器

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.6 Word2Vec Word2Vec相对于原先介绍的词嵌入的方法来说更加的简单快速. Mikolov T, Chen ...

  10. delphi 7 连接 MySql

    网上有很多关于Delphi连接MySql数据库的文章,在这里,我只记录下自己测试过的方法,以备所需.系统环境:Windows XP SP3软件环境:Delphi 7 .mysql-installer- ...