Windows 8.1中的联系人和约会合约

2013 年 7 月 08 日

Windows 8.1 将更大程度地允许应用访问人脉(People)和日历的数据信息。该功能通过合约(Contract)来实现,通过这种方式,应用程序可以发送或者使用其它应用程序或操作系统的消息。在 Windows 8 中,像共享(发送、接收)和搜索(仅接收)合约这样的例子最常被引用到。应当指出的是,合约是操作系统的概念,应用程序无法自己创建合约。

第一版的人脉合约(People Contract)所实现的功能,是在应用程序中显示 Windows 绘制的联系人卡片。由于 UI 是由 Windows 掌控的,所以在各个应用程序中,用户的体验是一致的。用户可以从联系人卡片来启动其它操作,如发送电子邮件或拨打电话等。

正如上图所展示的一样,联系人卡片被集成进应用中,而不是像设置、共享合约那样作为一个单独的边栏窗口。

当调用 ShowContactCard 方法时,需要指定应用程序中不显示联系人卡片的地方(即排除区域)。在上例中,被排除的区域是邮件收件人列表。除了此方法外,还有一个称为 ShowDelayLoadedContactCard 的替换版本。

应用可以通过调用 ShowDelayLoadedContactCard 方法快速显示卡片的部分内容,而其余的详细信息要等待查找操作完成后一次性进行填充,但查找操作可能会十分漫长。

联系人管理的基本变化
在 Windows 8 中,人脉(People)应用直接对联系人列表进行管理。而在 Windows 8.1 中,取而代之的是集中化的“Windows 联系人存储”,任何应用都可以查询联系人信息。这些查询可以使用姓名、电子邮件地址以及电话号码作为组合查询条件。

当查询失败时,系统会根据应用的查询条件构建出一个虚拟联系人,并显示该虚拟联系人的卡片。用户可以选择将虚拟联系人信息转化为真实联系人,并保存在通讯簿中。

由于实际上是 Windows 在管理 UI,因此应用虽然能够展示联系人卡片,却无法访问联系人存储中的信息。

操作类型

目前 Windows 8.1 计划支持以下操作类型:

  • 发送邮件
  • 通话
  • 发送消息
  • 视频通话
  • 定位地址
  • 发布

为了避免使 UI 布局混乱,联系人卡片只会显示前三个有效操作,操作的有效性是根据联系人数据决定的。如果可用操作超过三个,那么发送邮件,通话和发送消息将具有优先权。

接收联系人操作

当用户在联系人卡片上点击按钮时,相关的应用程序以并列模式(Side-By-Side Mode)打开。该应用程序可接收的操作类型和联系人对象一样。

关于如何将应用注册为联系人操作处理程序的具体细节尚不清楚。但我们了解到,其方式和文件、协议处理程序的注册方式一样,用户需要在应用程序清单(Manifest)上进行注册,并且各类操作需要分别注册。

对于已经注册 mailto 协议的应用程序,系统将会自动帮它们注册邮件操作。

在日历中添加事件

在 Windows 8.1 中,应用程序可以在用户日历中添加事件。应用程序需要先创建一个约会对象,然后触发操作系统显示添加事件对话框。用户所选的日历应用程序负责绘制对话框并且保存记录。这一步需要用户确认,如未经用户明确同意,不能添加日历条目。

如果用户同意保存条目,应用程序将会得到返回的唯一标识符。此标识符可用于以后更新事件。

备用日历

其它应用也能够将自身注册为日历供用户选择。但有关如何实现的细节尚未公布。

局限 http://channel9.msdn.com/Events/Build/2013/ 由此看来,应用程序不会被授予全部的可编程权限来访问用户的联系人以及约会信息。此举可以防止开发人员编写恶意程序来窃取私人信息,但这种方式的弊端是阻止了开发人员在应用程序中创建很多有用的类。

如需了解更多信息,各位读者可以观看 Build 2013 大会中名为构建集成人脉和日历事件的应用的会议或是查阅 MSDN 文档:

查看英文原文: Contact and Appointment Contracts in Windows 8.1

2013 年 7 月 08 日 07:50866
用户头像

发布了 36 篇内容, 共 11.8 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

HashMap 的 7 种遍历方式与性能分析

Bruce Duan

Java 性能 hashmap 遍历

周报 01|多点分享,少点创作

强劲九

学习 读书

运维常见问题及排查思路

编程随想曲

运维

每天打卡python面试题 - 在一行中捕获多个异常(块除外)

志学Python

Python 面试题 python 爬虫 python3.7

死磕Java并发编程(7):读写锁 ReentrantReadWriteLock 源码解析

七哥爱编程

Java并发 读写锁 ReentrantReadWriteLock

我愿沉迷于学习,无法自拔(二)

孙瑜

深度思考 个人成长

高仿瑞幸小程序 01 初建项目,引入Vant Weapp

曾伟@喵先森

小程序 微信小程序 前端 vant

程序员陪娃漫画系列——魔方

孙苏勇

程序员 生活 程序员人生 陪伴 漫画

KubeFATE: 用云原生技术赋能联邦学习(一)

亨利笔记

人工智能 学习 FATE KUBEFATE

每日一道python面试题 - Python的函数参数传递

志学Python

Python 爬虫 面试题 python 爬虫 python3.x

爬虫(107)Python 3.7的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

志学Python

Python 最佳实践 python 爬虫 python3.7 python升级

3NF建模&维度建模

常海峰

Go语言获取程序各类资源的绝对路径的方法

良少

Python go 路径 动态 绿色

什么是 MQ ?

itfinally

系统设计 MQ

GroupBy 用法的三重境界,面试终结者

Hyun

数据库 sql 大数据 性能优化 数据分析

这里有一个慢 SQL 查询等你来优化

石头

MySQL 数据库 性能优化 后端

一些想法

Z

爬虫(108)Python 3.8的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

志学Python

python 爬虫 python3.x python升级

kettle(Pentaho Data Integration) 使用"最佳"实践

稻草鸟人

Java kettle

目标:2020年学会写文章

wiflish

​成功的人,都是 “狠角色”

非著名程序员

程序员 提升认知 成功学 自律

即将步入职场,忐忑而又期待的新人菜鸟

菜农阿飞

成长 新人

游戏夜读 | 2020周记(3.27-4.3)

game1night

关于5G RCS的产品猜想

机器鸟

如何写排版优雅简洁的文章?

池建强

写作 排版

C++中glog源码剖析以及如何设计一个高效 log模块

程序喵大人

c++ 编程语言

高仿瑞幸小程序 00 准备工作

曾伟@喵先森

小程序 微信小程序 前端 瑞幸

Windows Terminal添加右键菜单

simon

Windows Terminal 右键菜单 终端 开发者工具 命令行

用行动解决情绪,情绪永远是累赘

熊斌

情绪控制 团队协作

Hive 中的 GroupBy, Distinct 和 Join

tkanng

sql 大数据 hadoop hive

初步了解MyBatis

Java收录阁

mybatis

Windows 8.1中的联系人和约会合约-InfoQ