×
Namespaces

Variants
Actions

Windows Phone 8 程序联系人存储

From Nokia Developer Wiki
Jump to: navigation, search
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
Article Metadata

兼容于
文章
zhenglin 在 07 Feb 2013 创建
最后由 hamishwillee 在 11 Sep 2013 编辑


Introduction

程序联系人存储是第三方的应用程序创建的联系人数据,这些联系人的数据也可以在手机的通讯录里面进行显示,但是它们是由创建这些联系人数据的第三方应用程序所管理的。联系人数据的归属应用程序可以设置这些联系人数据的系统和其他程序的访问权限,对属于它自己的联系人具有增删改的权限,并且一旦用户卸载了联系人数据归属应用程序,这些联系人也会被删除掉。程序联系人存储的API在空间Windows.Phone.PersonalInformation下,下面来看一下如何去使用这些API来操作联系人。


Summary

ContactStore类表示一个Windows Phone应用程序的自定义联系人存储,它是应用程序存储的一个管理者,负责管理应用程序所创建的联系人。ContactStore类的主要成员如表15.9所示。StoredContact类表示一个应用程序自定义的联系人存储,它继承了IContactInformation接口,所有由应用程序创建的联系人都是一个StoredContact类的对象。 新增程序联系人需要先创建或者打开程序的联系人存储ContactStore,并且可以设置该程序联系人存储的被访问权限。创建的代码如下:

    ContactStore conStore = await ContactStore.CreateOrOpenAsync();

联系人存储对于系统通讯和其他程序的都有权限的限制,ContactStoreSystemAccessMode枚举表示手机系统通讯录对应用程序联系人的访问权限,有ReadOnly只读权限和ReadWrite读写两个权限,ContactStoreApplicationAccessMode枚举表示第三方应用程序对应用程序联系人的访问权限类型,有LimitedReadOnly限制只读权限和ReadOnly只读权限。上面的代码创建联系人存储的代码是默认用了最低的访问权限来来创建联系人存储,即联系人对于系统通讯录是只读的权限,对于其他程序的访问权限是限制只读权限。下面来看一下自定义权限的创建联系人存储。

    //创建一个系统通讯可以读写和其他程序只读的联系人存储
ContactStore conStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly);

接下来看一下如何创建一个联系人: 1.第一种方式直接通过联系人存储创建联系人

    //创建或者打开联系人存储
ContactStore conStore = await ContactStore.CreateOrOpenAsync();
//保存联系人
StoredContact storedContact = new StoredContact(conStore);
// 设置联系人的展示名称
storedContact.DisplayName = "展示名称";
//保存联系人
await storedContact.SaveAsync();

2.第二种方式通过ContactInformation类对象创建联系人

    ContactInformation类表示一个非系统存储中联系人的联系人信息。ContactInformation类的主要成员如表15.11所示。
//创建一个ContactInformation类
ContactInformation conInfo = new ContactInformation();
// 获取ContactInformation类的属性map表
var properties = await conInfo.GetPropertiesAsync();
//添加电话属性
properties.Add(KnownContactProperties.Telephone, "123456");
//添加名字属性
properties.Add(KnownContactProperties.GivenName, "名字");
//创建或者打开联系人存储
ContactStore conStore = await ContactStore.CreateOrOpenAsync();
//保存联系人
StoredContact storedContact = new StoredContact(conStore, conInfo);
//保存联系人
await storedContact.SaveAsync();

程序联系人的查询 联系人查询也需要创建联系人存储,创建联系人存储的形式和联系人新增是一样的。联系人查询是通过ContactStore的CreateContactQuery方法来创建一个查询,可以查询的参数ContactQueryOptions来设置查询返回的结果和排序的规则,创建的查询时ContactQueryResult类型。可以通过ContactQueryResult类的GetContactsAsync异步方法获取联系人存储中的联系人列表和通过GetCurrentQueryOptions方法获取当前的查询条件。下面来看创建联系人查询的代码如下:

conStore = await ContactStore.CreateOrOpenAsync();
ContactQueryResult conQueryResult = conStore.CreateContactQuery();
uint count = await conQueryResult.GetContactCountAsync();
IReadOnlyList<StoredContact> conList = await conQueryResult.GetContactsAsync();

程序联系人的编辑

联系人编辑删除也需要创建联系人存储,创建联系人存储的形式和联系人新增是一样的。联系人的编辑需要首先要获取要编辑的联系人,获取编辑的联系人可以通过联系人的id或者remoteid来获取,获取到的联系人是一个StoredContact对象,通过修改该对象的属性,然后再调用SaveAsync保存方法就可以实现编辑联系人了。删除联系人的可以分为删除一个联系人和删除所有的联系人,删除一个联系人的可以通过联系人的id然后调用ContactStore的DeleteContactAsync方法来进行删除,如果要删除所有的联系人那么就要调用ContactStore的DeleteAsync方法。联系人的新增,编辑和删除都会有相关的操作记录,GetChangesAsync方法来获取联系人的修改记录。下面来看一下修改一个联系人的代码:

ContactStore conStore = await ContactStore.CreateOrOpenAsync();
StoredContact storCon = await conStore.FindContactByIdAsync(id);
var properties = await storCon.GetPropertiesAsync();
properties[KnownContactProperties.Telephone] = "12345678";
await storCon.SaveAsync();

程序联系人的删除

删除联系人的可以分为删除一个联系人和删除所有的联系人,删除一个联系人的可以通过联系人的id然后调用ContactStore的DeleteContactAsync方法来进行删除,如果要删除所有的联系人那么就要调用ContactStore的DeleteAsync方法。联系人的新增,编辑和删除都会有相关的操作记录,GetChangesAsync方法来获取联系人的修改记录。下面来看一下删除一个联系人的代码:

ContactStore conStore = await ContactStore.CreateOrOpenAsync();
await conStore.DeleteContactAsync (id);
await conStore.DeleteAsync ();
This page was last modified on 11 September 2013, at 06:57.
131 page views in the last 30 days.