• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
手写的从前
博客园    首页    新随笔    联系   管理    订阅  订阅

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         }

 

posted @ 2015-06-26 02:07  手写从前  阅读(219)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3