联系人WindowsPhone8程序联系人存储

windowsphone8  时间:2021-03-11  阅读:()

Windo ws Phone 8程序联系人存储

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

Conta ctSto re类和S tored Conta ct类

Conta ctStore类表示一个WindowsPhone应用程序的自定义联系人存储它是应用程序存储的一个管理者负责管理应用程序所创建的联系人。 Conta ctStore类的主要成员如表15.9所示。 Store dCont act类表示一个应用程序自定义的联系人存储它继承了I Conta ctInformat ion接口所有由应用程序创建的联系人都是一个Sto redCo ntact类的对象。 StoredCont act类的主要成员如表15. 10所示。

表15.9 Conta ctStore类的主要成员

表15. 10 Store dCont act类的主要成员

15.3.2程序联系人的新增

新增程序联系人需要先创建或者打开程序的联系人存储C ontac tStor e并且可以设置该程序联系人存储的被访问权限。创建的代码如下

Conta ctStore conSt ore = await ContactStore.Creat eOrOp enAsync() ;

联系人存储对于系统通讯和其他程序的都有权限的限制 Conta ctSto reSys temAc cessM ode枚举表示手机系统通讯录对应用程序联系人的访问权限有Read Only只读权限和R eadWr ite读写两个权限 Conta ctSto reApp licat ionAc cessM ode枚举表示第三方应用程序对应用程序联系人的访问权限类型有Limi tedReadOnl y限制只读权限和ReadOnl y只读权限。上面的代码创建联系人存储的代码是默认用了最低的访问权限来来创建联系人存储 即联系人对于系统通讯录是只读的权限对于其他程序的访问权限是限制只读权限。下面来看一下自定义权限的创建联系人存储。

//创建一个系统通讯可以读写和其他程序只读的联系人存储

Conta ctSto re conSt ore = await Conta ctSto re.Creat eOrOp enAsy nc(Conta ctSto reSystemAc cessM ode.ReadW rite, Conta ctSto reApp licat ionAc cessM ode.ReadO nly) ;

接下来看一下如何创建一个联系人

1.第一种方式直接通过联系人存储创建联系人

//创建或者打开联系人存储

Conta ctStore conSt ore = await ContactStore.Creat eOrOp enAsync() ;

//保存联系人

Store dCont act store dCont act = new Store dCont act(conSt ore) ;

//设置联系人的展示名称store dCont act.Displ ayName= "展示名称";

//保存联系人await store dCont act.SaveA sync() ;

2.第二种方式通过Con tactI nform ation类对象创建联系人

Conta ctInf ormat ion类表示一个非系统存储中联系人的联系人信息。 Conta ctInf ormat ion类的主要成员如表15. 11所示。

//创建一个C ontac tInfo rmati on类

Conta ctInf ormat ion conIn fo = new Conta ctInf ormat ion() ;

//获取Con tactI nform ation类的属性m ap表var prope rties = await conIn fo.GetPr opert iesAs ync() ;

//添加电话属性prope rties .Add(Known Conta ctPro perti es.Telep hone, "123456") ;

//添加名字属性prope rties .Add(Known Conta ctPro perti es.Given Name, "名字") ;

//创建或者打开联系人存储

Conta ctStore conSt ore = await ContactStore.Creat eOrOp enAsync() ;

//保存联系人

Store dCont act store dCont act = new Store dCont act(conSt ore, conInfo) ;

//保存联系人await store dCont act.SaveA sync() ;

表15. 11 Conta ctInf ormat ion类主要成员

程序联系人的查询

联系人查询也需要创建联系人存储创建联系人存储的形式和联系人新增是一样的。联系人查询是通过Co ntact Store的Crea teCon tactQ uery方法来创建一个查询可以查询的参数Con tactQ ueryO ption s来设置查询返回的结果和排序的规则创建的查询时Cont actQueryRe sult类型。可以通过C ontac tQuer yResu lt类的G etCon tacts Async异步方法获取联系人存储中的联系人列表和通过GetCurren tQuer yOpti ons方法获取当前的查询条件。下面来看创建联系人查询的代码如下conSt ore = await Conta ctSto re.Creat eOrOp enAsy nc() ;

Conta ctQue ryRes ult conQu eryRe sult = conSt ore.Creat eCont actQu ery() ;uint count = await conQu eryRe sult.GetCo ntact Count Async () ;

IRead OnlyL ist<Store dCont act> conLi st = await conQu eryRe sult.GetCo ntact sAsyn c() ;程序联系人的编辑

联系人编辑删除也需要创建联系人存储创建联系人存储的形式和联系人新增是一样的。联系人的编辑需要首先要获取要编辑的联系人获取编辑的联系人可以通过联系人的id或者remot eid来获取获取到的联系人是一个Store dCont act对象通过修改该对象的属性

然后再调用SaveA sync保存方法就可以实现编辑联系人了。删除联系人的可以分为删除一个联系人和删除所有的联系人删除一个联系人的可以通过联系人的id然后调用Con tac t Store的Delet eCont actAs ync方法来进行删除如果要删除所有的联系人那么就要调用ContactS tore的Delet eAsyn c方法。联系人的新增编辑和删除都会有相关的操作记录GetChanges Async方法来获取联系人的修改记录。下面来看一下修改一个联系人的代码Conta ctStore conSt ore = await ContactStore.Creat eOrOp enAsync() ;

Store dCont act storC on = await conSt ore.FindC ontac tByIdAsync (id) ;var prope rties = await storC on.GetPr opert iesAs ync() ;prope rties [Known Conta ctPro perti es.Telep hone] = "12345678";await storC on.SaveA sync() ;

程序联系人的删除

删除联系人的可以分为删除一个联系人和删除所有的联系人删除一个联系人的可以通过联系人的id然后调用Con tactS tore的Delet eCont actAs ync方法来进行删除如果要删除所有的联系人那么就要调用Con tactS tore的Delet eAsyn c方法。联系人的新增编辑和删除都会有相关的操作记录 GetCh anges Async方法来获取联系人的修改记录。下面来看一下删除一个联系人的代码

Conta ctStore conSt ore = await ContactStore.Creat eOrOp enAsync() ;await conSt ore.Delet eCont actAs ync (id) ;await conSt ore.Delet eAsyn c () ;

实例演示联系人存储的使用

下面给出查询日程安排的示例查询手机里面所有的日程安排信息。

代码清单1 5-3联系人存储的增删改源代码第15章/Examp les_15_3

MainP age.xaml文件主要代码联系人新增页面

<Grid x:Name="Conte ntPan el" Grid.Row="1" Margi n="12,0, 12,0"> <StackPanel >

<TextB lock Horiz ontal Align ment="Left" Text="名字" FontS ize="30"/><TextB ox Horiz ontal Align ment="Left" x:Name="name" Heigh t="85" Text="" Width="296"/> <TextB lock Horiz ontal Alignment="Left" Text="电话"FontSize="30" /> <TextB ox Horiz ontal Align ment="Left" x:Name="phone "Heigh t="85" Text="" Width="296"/> <Butto n Content="保存" Horizontal Align ment="Left" Width ="308" Heigh t="91" Click ="Butto n_Cli ck_1"/><Butto n Conte nt="查询应用存储的联系人"Horiz ontal Align ment="Left" Width="308"Heigh t="91" Click="Button_Cli ck_2"/> </StackPanel > </Grid>MainP age.xaml.cs文件主要代码

//新增一个联系人private async void Button_Cli ck_1 (object sender, Route dEventArgs e)

{if (name.Text != "" && phone .Text != "")

{try

{

//创建一个联系人的信息对象

Conta ctInf ormat ion conIn fo = new Conta ctInf ormat ion() ;

//获取联系人的属性字典var prope rties = await conIn fo.GetPr opert iesAs ync() ;

//添加联系人的属性prope rties .Add(Known Conta ctPro perti es.Telep hone,phone .Text) ;prope rties .Add(Known Conta ctPro perti es.Given Name,name.Text) ;

//创建或者打开联系人存储

Conta ctStore conSt ore =await Conta ctSto re.Creat eOrOp enAsync() ;

Store dCont act store dCont act =new Store dCont act(conSt ore, conInfo) ;

//保存联系人await store dCont act.SaveA sync() ;

Messa geBox.Show("保存成功") ; }catch (Excep tion ex) {

Messa geBox.Show("保存失败错误信息 " + ex.Messa ge) ;

} }else

{Messa geBox.Show("名字或电话不能为空") ; } }

//跳转到联系人列表页面private void

Butto n_Cli ck_2(object sender, RoutedEventArgs e) {

Navig ation Servi ce.Navig ate

(new Uri ("/Conta ctsLi st.xaml", UriKi nd.Relat ive) ) ; }

Conta ctsLi st.xaml文件主要代码联系人列表页面

<Grid x:Name="Conte ntPan el" Grid.Row="1" Margi n="12,0, 12,0"> <StackPanel >

<ListB ox x:Name="conLi stBox" Items Sourc e="{Bindi ng}" > <ListBox. ItemT emplate >

<DataT emplate>

<StackPanel >

<TextB lock Text="{Bindi ng Name}" />

<TextB lock Text="{Bindi ng Id}" />

<TextB lock Text="{Bindi ng Phone}" />

<Butto n Content="删除" Horiz ontal Alignment="Left" Width="308" Height="91" Click="Button_Click_1"/>

<Butto n Content="编辑" Horiz ontal Alignment="Left" Width="308" Height="91" Click="Button_Click_2"/>

<TextB lock Text="————————————————————————" />

</StackPanel >

</DataT emplate>

</ListBox. ItemTemplate>

</ListBox>

</StackPanel >

</Grid>

Conta ctsLi st.xaml.cs文件主要代码priva te ContactStore conSt ore;

//联系人存储publi c ContactsLi st()

{Initi alizeComponent() ; }

//进入页面事件prote ctedo verri devoi d OnNav igate dTo(Syste m.Windo ws.Navig ation .Navig ation EventArgs e) {

GetCo ntact s() ;base.OnNav igate dTo(e) ; }

//获取联系人列表async private void GetCo ntact s() { conSt ore =await ContactStore.Creat eOrOp enAsy nc() ; Conta ctQue ryRes ult conQu eryRe sult = conStore.Creat eCont actQu ery() ;

//查询联系人

IRead OnlyL ist<Store dCont act> conLi st = await conQu eryRe sult.GetCo ntact sAsyn c() ;List<Item> list = new List<Item>() ;forea ch (Store dCont act storCon in conLi st)

{var prope rties =await storC on.GetPr opert iesAs ync() ;list.Add(new Item {

Name = storC on.Famil yName + storC on.GivenName, Id

= storC on. Id, Phone = prope rties [Known Conta ctPro perties.Telep hone] .ToStr ing() } ) ; }conLi stBox.Items Sourc e= list; }

//删除联系人事件处理private async void Button_Cli ck_1 (object sender, Route dEventArgs e)

{ButtondeleteButton = senderas Button;

Item delet eItem = deleteButton.DataContext as Item;await conSt ore.Delet eCont actAs ync(delet eItem .Id) ; GetCo ntacts() ; }

//跳转到编辑联系人页面private void Button_Cli ck_2(object sender, RoutedEventArgs e) {ButtondeleteButton = senderas Button;

Item editI tem =delet eButton.DataContext as Item;

Navig ationServi ce.Navigate(new Uri ("/EditC ontac t.xaml?Id=" + editI tem. Id, UriKind.Relat ive) ) ; } }

// 自定义绑定的联系人数据对象 class Item

{publi c stringName { get; set; }publi c stringId { get; set; }

publi c stringPhone { get; set; } }

EditC ontac t.xaml文件主要代码联系人编辑页面

<Grid x:Name="Conte ntPan el" Grid.Row="1" Margi n="12,0, 12,0"> <StackPanel >

<TextB lock Horiz ontal Align ment="Left" Text="名字" FontS ize="30"/><TextB ox Horiz ontal Align ment="Left" x:Name="name" Heigh t="85" Text="" Width="296"/> <TextB lock Horiz ontal Align ment="Left" Text="电话" FontSize="30" /> <TextB ox Horiz ontal Alignment="Left" x:Name="phone" Height="85" Text="" Width="296"/> <ButtonContent="保存"Horiz ontal Alignment="Left" Width="308" Heigh t="91" Click="Butto n_Cli ck_1"/> </StackPanel > </Grid>

EditC ontac t.xaml.cs文件主要代码private stringconId = "";priva te ContactStore conSt ore;

//联系人数据存储priva te StoredContact storCon;

//联系人对象priva te IDict ionary<string, object> properties ;//联系人属性字典publi c EditContact()

{ Initi alizeComponent() ; }

//进入页面事件处理prote ctedo verri devoi d OnNav igate dTo(Syste m.Windo ws.Navig ation .Navig ation EventArgs e) {

//通过联系人的id获取联系人的信息if

(Navig ationConte xt.Query Strin g.Conta insKe y("Id") ) {conId =

Navig ation Conte xt.Query Strin g["Id"] .ToStr ing() ; GetCo ntact (conId); }base.OnNav igate dTo(e) ; }

//保存编辑的联系人private async void Button_Cli ck_1 (object sender, Route dEventArgs e) {if (name.Text != "" && phone .Text != "") {storC on.GivenName =name.Text;prope rties [Known Conta ctPro perti es.Telep hone] = phone.Text;await storC on.SaveA sync() ;

//保存联系人

Navig ation Servi ce.GoBac k() ;

//返回上一个页面 }else {

Messa geBox.Show("名字或者电话不能为空") ; } }

//获取需要编辑的联系人信息

async private void GetContact (string id)

{conSt ore = await Conta ctSto re.Creat eOrOp enAsy nc() ;storC on = await conSt ore.FindC ontac tByIdAsync (id) ;prope rties = await storC on.GetPr opert iesAs ync() ;name.Text = storC on.GivenName;phone .Text = prope rties [Known Conta ctPro perti es.Telep hone] .ToStr ing() ; }phone .Text = prope rties [Known Conta ctPro perti es.Telep hone] .ToStr ing() ; }

两款半月湾 HMBcloud 春节88折日本和美国CN2 VPS主机套餐

春节期间我们很多朋友都在忙着吃好喝好,当然有时候也会偶然的上网看看。对于我们站长用户来说,基本上需要等到初八之后才会开工,现在有空就看看是否有商家的促销。这里看到来自HMBcloud半月湾服务商有提供两款春节机房方案的VPS主机88折促销活动,分别是来自洛杉矶CN2 GIA和日本CN2的方案。八八折优惠码:CNY-GIA第一、洛杉矶CN2 GIA美国原生IP地址、72小时退款保障、三网回程CN2 ...

A400互联(49元/月)洛杉矶CN2 GIA+BGP、1Gbps带宽,全场独服永久5折优惠

a400互联是一家成立于2020年商家,主营美国机房的产品,包括BGP线路、CN2 GIA线路的云服务器、独立服务器、高防服务器,接入线路优质,延迟低,稳定性高,额外也还有香港云服务器业务。当前,全场服务器5折,香港VPS7折,洛杉矶VPS5折,限时促销!A400互联官网:https://a400.net/优惠活动全场独服永久5折优惠(续费同价):0722香港VPS七折优惠:0711洛杉矶VPS五...

无忧云:洛阳BGP云服务器低至38.4元/月起;雅安高防云服务器/高防物理机优惠

无忧云怎么样?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。一、无忧云官网点击此处进入无忧云官方网站二...

windowsphone8为你推荐
阿丽克丝·布莱肯瑞吉行尸走肉第六季女演员嘉兴商标注册嘉兴那里有设计商标的月神谭适合12岁男孩的网名,要非主流的,帮吗找找,谢啦www.kanav001.com长虹V001手机小游戏下载的网址是什么m.kan84.net电视剧海派甜心全集海派甜心在线观看海派甜心全集高清dvd快播迅雷下载ww.66bobo.comfq55点com是什么网站www.1diaocha.com请问网络上可以做兼职赚钱吗?现在骗子比较多,不敢盲目相信。请大家推荐下www.147qqqcom求女人能满足我的…官人放题《墨竹题图诗》 大意盗车飞侠侠盗飞车飞机秘籍
厦门域名注册 北京域名空间 blackfriday windows主机 主机屋免费空间 创宇云 国外php空间 毫秒英文 qingyun linux空间 微信收钱 炎黄盛世 河南m值兑换 亚马逊香港官网 中国电信测速网 微软服务器操作系统 上海联通宽带测速 申请免费空间和域名 英雄联盟台服官网 测试网速命令 更多