Windows Phone 8/Windows 8 启动第三方应用程序并传递参数
需要被其他应用启动的第三方应用需要注册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¶m2=value2¶m3=value3 "));
Windows Phone 8/Windows 8 启动第三方应用程序并传递参数的更多相关文章
- 如何在Android中的Activity启动第三方应用程序?
如何在点击某个按键后,执行启动第三方应用程序界面? /** * <功能描述> 启动应用程序 * * @return void [返回类型说明] */ private void startU ...
- Android启动第三方应用程序
主要是开始通过包名的第三方应用程序,获取的方法的包名是非常在线.不是说. 两种方式启动: 第一: Intent intent = new Intent(); intent.setClassName(& ...
- Android: 启动另外的APP及传递参数(转)
转载自:http://blog.csdn.net/iefreer/article/details/8812585 有时候需要从一个APP中启动另外一个APP,比如Twitter/微信等. 如果你不知道 ...
- Windows server 2008 R2 如何启动任务计划程序
使用windows server 2008 R2 的任务计划程序需要启动服务 Task Scheduler 服务, windows server 2008 R2 默认状态下Task Schedule ...
- 安卓入门 使用android创建一个项目 从启动activity中响应按钮事件 启动另一个activity 并传递参数
启动android studio创建一个新项目 public void sendMessage(View view){ Intent intent=new Intent(this,DispalyMes ...
- 【WP8】Uri关联启动第三方App
在WP8中支持启动第三方应用程序,比如在App1中可以打开App2,你可以在你的应用程序中直接打开QQ,也可以让其他开发者调用你的APP,例如:软件盒子 下面演示被调用方和调用方的使用方法,新建两个项 ...
- Windows 2003 Server 标准版启动问题解决(资源转贴)
维护的系统之一是部署在windows2003 Server标准版的服务器上,可能是由于某个应用问题,导致远程重启失败,害得我在机房呆了一早晨,可算是够折腾的.最后按照官方文档解决,刚放文档地址是:ht ...
- windows下postgreSQL安装与启动
转:https://www.yiibai.com/postgresql/install-postgresql.html https://blog.csdn.net/irainreally/articl ...
- 玩转Windows服务系列——Windows服务启动超时时间
最近有客户反映,机房出现断电情况,服务器的系统重新启动后,数据库服务自启动失败.第一次遇到这种情况,为了查看是不是断电情况导致数据库文件损坏,从客户的服务器拿到数据库的日志,进行分析. 数据库工作机制 ...
随机推荐
- 【刷题】BZOJ 2434 [Noi2011]阿狸的打字机
Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的 ...
- [SCOI2016]幸运数字 线性基
题面 题面 题解 题面意思非常明确:求树上一条链的最大异或和. 我们用倍增的思想. 将这条链分成2部分:x ---> lca , lca ---> y 分别求出这2个部分的线性基,然后合并 ...
- Spring Boot系列教程七:Spring boot集成MyBatis
一.创建项目 项目名称为 “springboot_mybatis_demo”,创建过程中勾选 “Web”,“MyBatis”,“MySQL”,第一次创建Maven需要下载依赖包(耐心等 ...
- [USACO4.1]麦香牛块Beef McNuggets 题解报告
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是"劣质的包装".& ...
- Dirichlet 卷积学习笔记
Dirichlet 卷积学习笔记 数论函数:数论函数亦称算术函数,一类重要的函数,指定义在正整数集上的实值或复值函数,更一般地,也可把数论函数看做是某一整数集上定义的函数. 然而百科在说什么鬼知道呢, ...
- kerberos中的spn详解
0x01 SPN定义 服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称.Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联. ...
- SFM学习
摘自李翠http://www.cnblogs.com/serser/p/6598621.html SFM 1.相机模型,内参数和外参数矩阵,相机标定: 2.极线约束和本征矩阵:特征点提取与匹配:提取到 ...
- 由保存当前用户引发的springboot的测试方式postman/restlet还是swagger2
今天在测试接口的到时候发现用springboot集成swagger2集成的项目,在测试session保存的当前用户的时候,发现执行不了,没有像postman或者restlet一样,保存这个接口的url ...
- Git之git push不手动输入用户名和密码
每次git push时都要输入用户名和密码,感觉很啰嗦,总结了网上的解决办法,有的发现不可以(原因未知),记录一个对我自己可用的方式,我的是windows. 1:添加环境变量 2:在%HOME%目录下 ...
- AI技术说:人工智能相关概念与发展简史
作为近几年的一大热词,人工智能一直是科技圈不可忽视的一大风口.随着智能硬件的迭代,智能家居产品逐步走进千家万户,语音识别.图像识别等AI相关技术也经历了阶梯式发展.如何看待人工智能的本质?人工智能的飞 ...