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="第十六届"二十一世纪的 ...
随机推荐
- Hibernate学习笔记4
一.关于联合主键的映射测试实例 实体类: package com.***.comBineKey;public class Person { private Person_pk pk; private ...
- 摘要: Linux下which、whereis、locate、find命令的区别
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用. which ...
- postcss-px2rem
1.安装 npm install gulp-postcss --save-dev 2.gulp var gulp = require('gulp'); var postcss = require('g ...
- MySQL查询语句(select)详解(1)
1.查询记录 select*from 表名 [where 条件];eg:select*from students;//查询 students 表中所有记录,所有字段的值都显示出来select fiel ...
- Android-studio开发 快捷键
这会儿正在学android开发,使用的是Android-studio 记录一下开发工具默认的 快捷键
- 12.super关键字
①在java中使用super关键字来调用父类的成分
- NSDecimalNumber用于精度准确的计算
在处理金额计算时,往往会涉及到小数,由于Double类型不准确,无法做到产品的要求.为了保证金额计算的准确性,建议使用NSDecimalNumber. 1.创建对象(常用的方法) // mantiss ...
- 动态生成linearLayout
LinearLayout linearLayout=new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL) ...
- p4lang/switch make bm-switchsai 出现内存不足导致的Error
报错如下: Compiling : bm::dc.cpp g++: internal compiler error: Killed (program cc1plus) Please submit a ...
- [skill] strncpy里边有两个坑
以前的笔记,今日翻出了复看了一下,转过来. ------------------------------------ 今天发现xxxdump中使用xxx_strncpy 替换 strncpy导致的bu ...