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

  • Jonathan Allen
  • 康锦龙

2013 年 7 月 8 日

话题:语言 & 开发

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

语言 & 开发