背水一战 Windows 10 (96) - 选取器: ContactPicker
作者:webabcd
介绍
背水一战 Windows 10 之 选取器
- ContactPicker(联系人选取窗口)
- 通过 ContactPicker 选取联系人,并获取其完整信息
示例
1、演示如何通过 ContactPicker 选择一个或多个联系人
Picker/ContactPickerDemo.xaml
<Page
x:Class="Windows10.Picker.ContactPickerDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Picker"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="10 0 10 10"> <TextBlock Name="lblMsg" Margin="5" /> <Button Name="btnPickContact" Content="pick a contact" Click="btnPickContact_Click" Margin="5" /> <Button Name="btnPickContacts" Content="pick multiple contacts" Click="btnPickContacts_Click" Margin="5" /> </StackPanel>
</Grid>
</Page>
Picker/ContactPickerDemo.xaml.cs
/* 演示如何通过 ContactPicker 选择一个或多个联系人
*
* ContactPicker - 联系人选择窗口(有好多 api 在 uwp 中废弃了)
* DesiredFieldsWithContactFieldType - 需要获取的联系人的字段(可以添加 ContactFieldType 类型的枚举)
* PickContactAsync() - 弹出联系人选取器(只能选取一个),返回 Contact 类型的对象
* PickContactsAsync() - 弹出联系人选取器(可以选取多个),返回 Contact 类型的对象
*
* Contact - 联系人对象
* 有一堆属性,看文档吧
*/ using System;
using System.Collections.Generic;
using Windows.ApplicationModel.Contacts;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; namespace Windows10.Picker
{
public sealed partial class ContactPickerDemo : Page
{
public ContactPickerDemo()
{
this.InitializeComponent();
} private async void btnPickContact_Click(object sender, RoutedEventArgs e)
{
ContactPicker contactPicker = new ContactPicker();
// 指定需要选取的联系人的字段
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber); // 启动联系人选取器,以选择一个联系人
Contact contact = await contactPicker.PickContactAsync(); if (contact != null)
{
lblMsg.Text += string.Format("name:{0}", contact.Name);
lblMsg.Text += Environment.NewLine; foreach (ContactEmail email in contact.Emails)
{
lblMsg.Text += string.Format("email kind:{0}, email address:{1}", email.Kind, email.Address);
lblMsg.Text += Environment.NewLine;
} foreach (ContactPhone phone in contact.Phones)
{
lblMsg.Text += string.Format("phone kind:{0}, phone number:{1}, phone description:{2}", phone.Kind, phone.Number, phone.Description);
lblMsg.Text += Environment.NewLine;
}
}
else
{
lblMsg.Text += "取消了";
lblMsg.Text += Environment.NewLine;
}
} private async void btnPickContacts_Click(object sender, RoutedEventArgs e)
{
ContactPicker contactPicker = new ContactPicker();
// 指定需要选取的联系人的字段
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber); // 启动联系人选取器,以选择多个联系人
IList<Contact> contacts = await contactPicker.PickContactsAsync(); if (contacts != null && contacts.Count > )
{
foreach (Contact contact in contacts)
{
lblMsg.Text += string.Format("name:{0}", contact.Name);
lblMsg.Text += Environment.NewLine; foreach (ContactEmail email in contact.Emails)
{
lblMsg.Text += string.Format("email kind:{0}, email address:{1}", email.Kind, email.Address);
lblMsg.Text += Environment.NewLine;
} foreach (ContactPhone phone in contact.Phones)
{
lblMsg.Text += string.Format("phone kind:{0}, phone number:{1}, phone description:{2}", phone.Kind, phone.Number, phone.Description);
lblMsg.Text += Environment.NewLine;
}
}
}
else
{
lblMsg.Text += "取消了";
lblMsg.Text += Environment.NewLine;
}
}
}
}
2、演示如何通过 ContactPicker 选取联系人,并获取其完整信息
Picker/ContactPicker2.xaml
<Page
x:Class="Windows10.Picker.ContactPicker2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Picker"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="10 0 10 10"> <TextBlock Name="lblMsg" Margin="5" /> <Image Name="imgThumbnail" Width="100" Height="100" HorizontalAlignment="Left" Margin="5" /> <Button Name="btnPickContact" Content="pick a contact" Click="btnPickContact_Click" Margin="5" /> </StackPanel>
</Grid>
</Page>
Picker/ContactPicker2.xaml.cs
/* 演示如何通过 ContactPicker 选取联系人,并获取其完整信息
*
* ContactPicker - 联系人选择窗口(有好多 api 在 uwp 中废弃了)
* DesiredFieldsWithContactFieldType - 需要获取的联系人的字段(可以添加 ContactFieldType 类型的枚举)
* PickContactAsync() - 弹出联系人选取器(只能选取一个),返回 Contact 类型的对象
* PickContactsAsync() - 弹出联系人选取器(可以选取多个),返回 Contact 类型的对象
*
* Contact - 联系人对象
* 有一堆属性,看文档吧
*
*
* 注:
* 1、通过 ContactPicker 选取的联系人,可以获取的信息有限,但是可以通过 ContactStore 获取联系人的完整信息
* 2、通过 ContactStore 是可以获取到全部联系人的完整信息的,这部分知识点以后再写
* 3、通过 ContactStore 获取数据的话,需要在 Package.appxmanifest 中配置 <Capability Name = "contacts" />
*/ using System;
using System.Collections.Generic;
using Windows.ApplicationModel.Contacts;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Imaging; namespace Windows10.Picker
{
public sealed partial class ContactPicker2 : Page
{
public ContactPicker2()
{
this.InitializeComponent();
} private async void btnPickContact_Click(object sender, RoutedEventArgs e)
{
ContactPicker contactPicker = new ContactPicker();
// 指定需要选取的联系人的字段
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber); // 启动联系人选取器,以选择一个联系人
Contact contact = await contactPicker.PickContactAsync(); if (contact != null)
{
lblMsg.Text += string.Format("name:{0}", contact.Name);
lblMsg.Text += Environment.NewLine;
lblMsg.Text += string.Format("id:{0}", contact.Id);
lblMsg.Text += Environment.NewLine; foreach (ContactEmail email in contact.Emails)
{
lblMsg.Text += string.Format("email kind:{0}, email address:{1}", email.Kind, email.Address);
lblMsg.Text += Environment.NewLine;
} foreach (ContactPhone phone in contact.Phones)
{
lblMsg.Text += string.Format("phone kind:{0}, phone number:{1}, phone description:{2}", phone.Kind, phone.Number, phone.Description);
lblMsg.Text += Environment.NewLine;
} ContactStore contactStore = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly);
// 通过 ContactStore 和联系人 id 可以获取到联系人的完整信息(需要配置 <Capability Name = "contacts" />)
Contact realContact = await contactStore.GetContactAsync(contact.Id); // 通过 ContactStore 也是可以拿到全部联系人信息的,这部分知识点以后再写
// IReadOnlyList<Contact> contacts = await contactStore.FindContactsAsync(); // 显示联系人的图片(只通过 ContactPicker 是获取不到的)
IRandomAccessStreamReference imageStreamRef = realContact.SmallDisplayPicture;
if (imageStreamRef != null)
{
IRandomAccessStream imageStream = await imageStreamRef.OpenReadAsync();
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(imageStream);
imgThumbnail.Source = bitmapImage;
}
}
else
{
lblMsg.Text += "取消了";
lblMsg.Text += Environment.NewLine;
}
}
}
}
OK
[源码下载]
背水一战 Windows 10 (96) - 选取器: ContactPicker的更多相关文章
- 背水一战 Windows 10 (97) - 选取器: CachedFileUpdater
[源码下载] 背水一战 Windows 10 (97) - 选取器: CachedFileUpdater 作者:webabcd 介绍背水一战 Windows 10 之 选取器 CachedFileUp ...
- 背水一战 Windows 10 (95) - 选取器: 自定义文件保存选取器
[源码下载] 背水一战 Windows 10 (95) - 选取器: 自定义文件保存选取器 作者:webabcd 介绍背水一战 Windows 10 之 选取器 自定义文件保存选取器 示例1.演示如何 ...
- 背水一战 Windows 10 (94) - 选取器: 自定义文件打开选取器
[源码下载] 背水一战 Windows 10 (94) - 选取器: 自定义文件打开选取器 作者:webabcd 介绍背水一战 Windows 10 之 选取器 自定义文件打开选取器 示例1.演示如何 ...
- 背水一战 Windows 10 (93) - 选取器: FileOpenPicker, FolderPicker, FileSavePicker
[源码下载] 背水一战 Windows 10 (93) - 选取器: FileOpenPicker, FolderPicker, FileSavePicker 作者:webabcd 介绍背水一战 Wi ...
- 背水一战 Windows 10 (27) - 控件(文本类): TextBlock
[源码下载] 背水一战 Windows 10 (27) - 控件(文本类): TextBlock 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBlock 示例 ...
- 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧
[源码下载] 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧 作者:webabcd 介绍背水一战 Wind ...
- 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue
[源码下载] 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue 作者:weba ...
- 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例
[源码下载] 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 作者:webabcd 介绍背水一战 Windows 10 之 资源 资源限定符概述 资源限定符示例 ...
- 背水一战 Windows 10 (6) - 控件 UI: 字体的自动继承的特性, Style, ControlTemplate
[源码下载] 背水一战 Windows 10 (6) - 控件 UI: 字体的自动继承的特性, Style, ControlTemplate 作者:webabcd 介绍背水一战 Windows 10 ...
随机推荐
- Swift UITableView嵌套UICollectionView点击事件冲突(点击事件穿透)
不管是啥都响应tableviewcell class JYShopCertificationCell: UITableViewCell { override func hitTest(_ point: ...
- java 坑总结
1.Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available. 解 ...
- 手工脱壳之FSG压缩壳-IAT表修复
目录 一.工具及壳介绍 二.脱壳 2.1.单步跟踪脱壳 2.2.IAT修复 三.程序脱壳后运行截图 四.个人总结 五.附件 一.工具及壳介绍 使用工具:Ollydbg.PEID.ImportREC.L ...
- sqoop mysql导入hive 数值类型变成null的问题分析
问题描述:mysql通过sqoop导入到hive表中,发现有个别数据类型为int或tinyint的列导入后数据为null.设置各种行分隔符,列分隔符都没有效果. 问题分析:hive中单独将有问题的那几 ...
- 校赛F
问题描述 例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3].换句话说,对于一个有序递增的序列a1, a2, a3, ……, an,排序后为an, a1, an-1, a2, ...
- Leetcode - 517 Super Washing Machines
今天开始定期记录本人在leetcode上刷题时遇到的有意思的题目. 517. Super Washing Machines You have n super washing machines ...
- HDU 2196.Computer 树形dp 树的直径
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Python中的 __name__有什么作用?最详细解读
案例说明: Python中的模块(.py文件)在创建之初会自动加载一些内建变量,__name__就是其中之一.Python模块中通常会定义很多变量和函数,这些变量和函数相当于模块中的一个功能,模块被导 ...
- Centos7搭建SS以及加速配置的操作记录 (转载)
原文地址https://www.cnblogs.com/kevingrace/p/8495424.html 部署 Shadowsocks之前,对它做了一个简单的了解,下面先介绍下.一道隐形的墙众所周知 ...
- Linux学习笔记:nginx基础
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP pro ...