Windows Phone 二十一、联系人存储

联系人资料是手机上必有的,在最新的 Windows Phone 中开放了相应的 API ,以便于应用程序读写通讯录。

注意:系统没有对整个手机自带的通讯录写入开放权限,每个应用只能管理属于当前应用的联系人。

联系人存储

1     <StackPanel>
2         <TextBox x:Name="txtName" Header="姓名" InputScope="NameOrPhoneNumber"/>
3         <TextBox x:Name="txtTel" Header="电话" InputScope="ChineseHalfWidth"/>
4         <TextBox x:Name="txtTel1" Header="电话" InputScope="TelephoneNumber"/>
5         <Button x:Name="btnSave" Content="Save" Click="btnSave_Click"/>
6         <Button x:Name="btnGet" Content="GET" Click="btnGet_Click"/>
7         <Button x:Name="btnPicker" Content="Picker" Click="btnPicker_Click"/>
8         <Button x:Name="btnGet2" Content="获取联系人信息2" Click="btnGet2_Click"/>
9     </StackPanel>
 1         private async void btnSave_Click(object sender, RoutedEventArgs e)
 2         {
 3             var name = txtName.Text;
 4             var tel = txtTel.Text;
 5 
 6             // 联系人存储容器
 7             ContactStore contactStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly);
 8 
 9             // 创建联系人信息对象
10             ContactInformation contactInformation = new ContactInformation();
11             // 设置联系人信息展示名称
12             contactInformation.DisplayName = name;
13             // 详细属性
14             var contactProps = await contactInformation.GetPropertiesAsync();
15             // 详细属性编辑通过字典形式操作,需要记住所有的属性名都有KnownContactProperties点出来
16             contactProps.Add(KnownContactProperties.MobileTelephone, tel);
17 
18 
19             // 创建一个存储对象将联系人信息存储到存储容器中
20             StoredContact storedContact = new StoredContact(contactStore, contactInformation);
21             // 保存
22             await storedContact.SaveAsync();
23         }
24 
25         private async void btnGet_Click(object sender, RoutedEventArgs e)
26         {
27             // 联系人存储容器
28             ContactStore contactStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly);
29 
30             // 通过联系人存储容器查询联系人列表
31             var result = contactStore.CreateContactQuery();
32 
33             var count = await result.GetContactCountAsync();
34 
35             var list = await result.GetContactsAsync();
36 
37             foreach (var item in list)
38             {
39                 System.Diagnostics.Debug.WriteLine(item.DisplayName);
40             }
41         }
42 
43         private async void btnPicker_Click(object sender, RoutedEventArgs e)
44         {
45             // 联系人选择器Flyout
46             Windows.ApplicationModel.Contacts.ContactPicker contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
47             // 必须设置以下项
48             contactPicker.DesiredFieldsWithContactFieldType.Add(Windows.ApplicationModel.Contacts.ContactFieldType.PhoneNumber);
49             // 查询所有选中对象
50             var temp = await contactPicker.PickContactsAsync();
51 
52         }

两种系统联系人读取的形式

1     <Grid>
2         <TextBox x:Name="txtSearch"/>
3         <Button x:Name="btnSearch" Content="Search" Click="btnSearch_Click"/>
4     </Grid>
 1         private async void btnSearch_Click(object sender, RoutedEventArgs e)
 2         {
 3             var contactStore = await Windows.ApplicationModel.Contacts.ContactManager.RequestStoreAsync();
 4             // 通过联系人存储容器查询联系人列表(全文检索)
 5             if (string.IsNullOrEmpty(txtSearch.Text))
 6             {
 7                 var result = await contactStore.FindContactsAsync();
 8                 foreach (var item in result)
 9                 {
10                     System.Diagnostics.Debug.WriteLine(item.DisplayName);
11                 }
12             }
13             else
14             {
15                 var result = await contactStore.FindContactsAsync(txtSearch.Text);
16                 foreach (var item in result)
17                 {
18                     System.Diagnostics.Debug.WriteLine(item.DisplayName);
19                 }
20             }
21 
22 
23             System.Diagnostics.Debug.WriteLine("--------------------------------");
24         }
原文地址:https://www.cnblogs.com/includeling/p/4601363.html