Windows Phone 二十一、联系人存储
联系人资料是手机上必有的,在最新的 Windows Phone 中开放了相应的 API ,以便于应用程序读写通讯录。
注意:系统没有对整个手机自带的通讯录写入开放权限,每个应用只能管理属于当前应用的联系人。
联系人存储
<StackPanel>
<TextBox x:Name="txtName" Header="姓名" InputScope="NameOrPhoneNumber"/>
<TextBox x:Name="txtTel" Header="电话" InputScope="ChineseHalfWidth"/>
<TextBox x:Name="txtTel1" Header="电话" InputScope="TelephoneNumber"/>
<Button x:Name="btnSave" Content="Save" Click="btnSave_Click"/>
<Button x:Name="btnGet" Content="GET" Click="btnGet_Click"/>
<Button x:Name="btnPicker" Content="Picker" Click="btnPicker_Click"/>
<Button x:Name="btnGet2" Content="获取联系人信息2" Click="btnGet2_Click"/>
</StackPanel>
private async void btnSave_Click(object sender, RoutedEventArgs e)
{
var name = txtName.Text;
var tel = txtTel.Text; // 联系人存储容器
ContactStore contactStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); // 创建联系人信息对象
ContactInformation contactInformation = new ContactInformation();
// 设置联系人信息展示名称
contactInformation.DisplayName = name;
// 详细属性
var contactProps = await contactInformation.GetPropertiesAsync();
// 详细属性编辑通过字典形式操作,需要记住所有的属性名都有KnownContactProperties点出来
contactProps.Add(KnownContactProperties.MobileTelephone, tel); // 创建一个存储对象将联系人信息存储到存储容器中
StoredContact storedContact = new StoredContact(contactStore, contactInformation);
// 保存
await storedContact.SaveAsync();
} private async void btnGet_Click(object sender, RoutedEventArgs e)
{
// 联系人存储容器
ContactStore contactStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); // 通过联系人存储容器查询联系人列表
var result = contactStore.CreateContactQuery(); var count = await result.GetContactCountAsync(); var list = await result.GetContactsAsync(); foreach (var item in list)
{
System.Diagnostics.Debug.WriteLine(item.DisplayName);
}
} private async void btnPicker_Click(object sender, RoutedEventArgs e)
{
// 联系人选择器Flyout
Windows.ApplicationModel.Contacts.ContactPicker contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
// 必须设置以下项
contactPicker.DesiredFieldsWithContactFieldType.Add(Windows.ApplicationModel.Contacts.ContactFieldType.PhoneNumber);
// 查询所有选中对象
var temp = await contactPicker.PickContactsAsync(); }
两种系统联系人读取的形式
<Grid>
<TextBox x:Name="txtSearch"/>
<Button x:Name="btnSearch" Content="Search" Click="btnSearch_Click"/>
</Grid>
private async void btnSearch_Click(object sender, RoutedEventArgs e)
{
var contactStore = await Windows.ApplicationModel.Contacts.ContactManager.RequestStoreAsync();
// 通过联系人存储容器查询联系人列表(全文检索)
if (string.IsNullOrEmpty(txtSearch.Text))
{
var result = await contactStore.FindContactsAsync();
foreach (var item in result)
{
System.Diagnostics.Debug.WriteLine(item.DisplayName);
}
}
else
{
var result = await contactStore.FindContactsAsync(txtSearch.Text);
foreach (var item in result)
{
System.Diagnostics.Debug.WriteLine(item.DisplayName);
}
} System.Diagnostics.Debug.WriteLine("--------------------------------");
}
Windows Phone 二十一、联系人存储的更多相关文章
- Exchange2016 & Skype for business 集成之三统一联系人存储
Exchange2016&Skype for business集成之二统一联系人存储 利用统一的联系人存储库,用户可以维护单个联系人列表,然后使这些联系人适用于多个应用程序,包括 Skype ...
- Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services
Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services Provisioning Services 是Citrix 出品的一系列虚拟化产品中最核心的一个组件, ...
- 【WP8.1开发】基于应用的联系人存储
上一篇文章所吹的牛是访问系统(手机)上的联系人,当然那只是读不能改,这是自然的,要是让你能随便修改用户的联系人信息的话,那后果很严重,有些恶意开发者就有可能把”你的户口改成猪“. 但是,API也允许应 ...
- WCF技术剖析之二十一:WCF基本异常处理模式[下篇]
原文:WCF技术剖析之二十一:WCF基本异常处理模式[下篇] 从FaultContractAttribute的定义我们可以看出,该特性可以在同一个目标对象上面多次应用(AllowMultiple = ...
- JAVA之旅(二十一)——泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符
JAVA之旅(二十一)--泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符 不知不觉JAVA之旅已经写到21篇了,不得不感叹当初自己坚持要重学一遍JAVA的信念,中途也算 ...
- 云计算设计模式(二十一)——Sharding分片模式
云计算设计模式(二十一)——Sharding分片模式 将一个数据存储到一组水平分区或碎片.存储和访问大量数据时,这个模式可以提高可扩展性. 背景和问题 由一个单一的服务器托管的数据存储区可能会受到以下 ...
- 条目二十一《总是让比较函数在等值情况下返回false》
条目二十一<总是让比较函数在等值情况下返回false> 这条目对序列容器是不适合的,因为序列容器就是通过等值判断来比较的. 对于关联容器来说,比较是等价比较,所以要注意等值的时候,比较子的 ...
- Directx11学习笔记【二十一】 封装键盘鼠标响应类
原文:Directx11学习笔记[二十一] 封装键盘鼠标响应类 摘要: 本文由zhangbaochong原创,转载请注明出处:http://www.cnblogs.com/zhangbaochong/ ...
- 第十六届“二十一世纪的计算”学术研讨会 密西根州立大学教授Anil K. Jain主题演讲
Biometrics---How Do I Know Who You Are? 密西根州立大学教授Anil K. Jain主题演讲" title="第十六届"二十一世纪的 ...
随机推荐
- Java_动态重新加载Class机制
Java动态重新加载Class 项目中使用到了动态重新加载Class的机制,作用是让一些代码上线之前可以在线上环境测试一下,当然,这是非常不好的测试机制,我刚来的时候也为这种机制感到惊讶—怎么可以在线 ...
- bzoj刷水
因为最近的生活太颓废总是不做题而被老师D了一番, 所以今天晚上到bzoj上去刷了几道水题..... bzoj 4320: ShangHai2006 Homework 题目大意 维护一个支持两个操作 ...
- 实战Java虚拟机之三“G1的新生代GC”
今天开始实战Java虚拟机之三:“G1的新生代GC”. 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实 ...
- mysql 主主互备
双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到 ...
- cuplayer酷播播放器 swf 带参数直接播放
客户需要使用cuplayer,直接调用swf 播放器. /Player/player.swf?FlvID=745,此处写入视频ID; 官方给的例子,运行是有问题的. http://www.cuplay ...
- p4lang/switch make bm-switchsai 出现内存不足导致的Error
报错如下: Compiling : bm::dc.cpp g++: internal compiler error: Killed (program cc1plus) Please submit a ...
- jdk(多版本)安装注意!
♣安装jdk和jre ♣jdk配置环境变量和测试 ♣安装多版本jdk和切换 ♣jdk下的jre和第二次安装的jre的区别 注意点: 1.jdk版本需要是64位 2.安装JDK 选择安装目录 安装过程中 ...
- nginx服务器配置
nginx主要配置 #定义Nginx运行的用户和用户组user www www; #每个worker进程绑定到指定CPU ,均衡各CPU 负载worker_cpu_affinity 000000000 ...
- Cross join in excel --- Copy from Internet
Set up the Workbook In this example, there are two tables -- Raw Materials and Packaging -- and each ...
- TiD大会学习心得之沟通交流
沟通交流是敏捷成功的关键要素,据相关调查阻碍敏捷的主要原因都与人有关:例如缺乏领导支持.团队缺乏协作精神.公司文化与敏捷相冲突等等:同时沟通交流也是团队建设.教练自身成长的重要支柱.下面结合在< ...