歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Windows Phone 8 人脈 people hub 通訊錄管理

今天給大家介紹下Windows Phone 8 的 people hub - 人脈相關的API,了解Windows phone的同學一定都知道在windows phone7的API對通訊錄的操作權限是只讀的 不能直接向通訊錄中添加聯系人 只能通過其他方式同步聯系人 例如:exchange, save deloge,這樣對一些通訊錄的應用帶來了很多用戶體驗上制約,不過在microsoft最新的Windows phone 8 SDK中打開的這一限制,支持API級別的通訊錄增刪改查,下面我就給大家介紹一下。

升級到WP8必需知道的13個特性 系列文章目錄地址:http://www.linuxidc.com/Linux/2013-08/89003.htm

當然在寫代碼之前不要忘記設置WMAppManifest文件

1. 通訊錄中添加聯系人

首先給大家介紹的是如何創建一個聯系人至聯系人列表,在SDK 8.0 中的 ContactStore 他用於聯系人操作

 
            ContactStore store = await ContactStore.CreateOrOpenAsync(
                                ContactStoreSystemAccessMode.ReadWrite,
                                ContactStoreApplicationAccessMode.ReadOnly);
 

可以看到CreateOrOpenAsync方法中有兩個參數 分別是 ContactStoreSystemAccessMode 和 ContactStoreApplicationAccessMode 兩個枚舉值 這兩個枚舉值比較關鍵 前者是聲明當前應用所創建的聯系人十分可以在People hub中編輯改寫,後者是聲明在其他應用程序中的現實訪問權限.

ReadOnly 在people hub中對於系統用戶來說是只讀的 ReadWrite 顧名思義就是可讀寫的。

 

LimitedReadOnly 對於其他應用程序來說能看到的信息只是描述信息和現實圖片 ReadOnly則是可以讀取全部信息的。

添加一個聯系人的代碼十分簡單

 
        async public void AddContact()
        {
            ContactStore store = await ContactStore.CreateOrOpenAsync(
                                ContactStoreSystemAccessMode.ReadWrite,
                                ContactStoreApplicationAccessMode.ReadOnly);
            StoredContact contact = new StoredContact(store);
            //contact.RemoteId = "123";
            //contact.Id 只讀屬性添加成功後系統會自動分配
            contact.GivenName = txtGivenName.Text;
            contact.FamilyName = txtFamilyName.Text;
            IDictionary<string, object> props = await contact.GetPropertiesAsync();
            props.Add(KnownContactProperties.Email, txtMail.Text);
            props.Add(KnownContactProperties.Telephone, txtPhone.Text);
            await contact.SaveAsync();
            MessageBox.Show("save done");
        }
 

這裡給大家提一下RemoteId 是一個識別聯系人的標示 可以是GUID進行同步修改的時候可以為mapping service上的數據所用,在應用中也支持RemoteId的查找聯系人。

2. 修改聯系人

 
        async private void UpdateContact(string remoteId, string givenName, string familyName, string email, string codeName)
        {
            ContactStore store = await ContactStore.CreateOrOpenAsync();
            StoredContact contact = await store.FindContactByRemoteIdAsync(remoteId);

            if (contact != null)
            {
                contact.GivenName = givenName;
                contact.FamilyName = familyName;

                IDictionary<string, object> props = await contact.GetPropertiesAsync();
                props[KnownContactProperties.Email] = email;

                IDictionary<string, object> extprops = await contact.GetExtendedPropertiesAsync();
                extprops["Codename"] = codeName;

                await contact.SaveAsync();
            }
        }
 

修改聯系人的過程和創建十分相似 區別就是可以通過一個RemoteId 或者 ID 獲取到目標聯系人對要修改的字段進行修改保存。

3. 刪除聯系人

 
            ContactQueryResult result = store.CreateContactQuery();
            IReadOnlyList<StoredContact> contacts = await result.GetContactsAsync();
            List<StoredContact> listSC = contacts.ToList();
            await store.DeleteContactAsync(listSC[0].Id);   
 

刪除聯系人更為簡單 只需要StoredContact的ID就可以進行刪除操作。

Copyright © Linux教程網 All Rights Reserved