2013-08-21 71 views

回答

1

嘗試這樣的事情

void GetContact() 
{ 
    cons = new Contacts(); 
    //Identify the method that runs after the asynchronous search completes. 
    cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(ContactsSearchCompleted); 
    //Start the asynchronous search. 
    cons.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1"); 
} 

private void ContactsSearchCompleted(object sender, ContactsSearchEventArgs e) 
{ 
    cons.SearchCompleted -= ContactsSearchCompleted; 
    //e.Results should be the list of contact, since there's no filter applyed in the search you shoul have all contact here 
} 

不這是我的一個老沒有測試代碼複製粘貼,所以你可能需要改變某些事情了

+1

感謝您的快速回復。我試過這種方法。它給了我所有的聯繫人,但我如何更新如果我想? – Krishna

+0

您不能,聯繫人是隻讀的。 – Pantelis

3

從您提供的鏈接(強調增加):

隨着Windows Phone 8的推出,微軟推出了一個全新的概念「custom 聯繫商店「[2]。除了對用戶的 聯繫人列表的只讀訪問以及上述演示的使用 創建新條目的單獨任務的方式(兩種都可以在7.x中獲得)之外,我們現在可以將 寫入我們自己的數據人們默默地集中,並且沒有用戶 的同意。 但是應用程序仍然無法操縱 從其他地方發起的現有聯繫人。從這個意義上說,屬於 應用程序的數據與其他應用程序有些分離。

這是通過設計,你不能編輯你沒有創建的聯繫人。

+0

謝謝。但我知道這是寫入英寸我發佈希望我可以得到任何解決方案。 – Krishna

0

你不能'' - 愚蠢的蹩腳的MS甚至不支持聯繫從vcard文件導入。所有的MS都希望你把每個數據都放到他們的服務器上,這樣他們就擁有了它。

0

首先,你應該跟Capability

爲WP8添加WMAppManifest.xml

enter image description here

爲wp8.1添加Package.appxmanifest

enter image description here

現在定義一個類PhoneContact來存儲數據

public class PhoneContact { 
    public string Name { get; set; } 
    public string Number { get; set; } 
    public string Email { get; set; } 
} 

創建的ObservableCollection,並從構造函數中調用了以下行動來讀取聯繫人列表。 N.B使用下面的命名空間還

using Microsoft.Phone.UserData; 
using System.Collections.ObjectModel; 

ObservableCollection<PhoneContact> phoneContact; 
public MainPage() { 
    InitializeComponent(); 
    phoneContact = new ObservableCollection<PhoneContact>(); 
    ReadPhoneContact(); 
} 

void ReadPhoneContact(){ 
    Contacts cnt = new Contacts(); 
    cnt.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted); 
    cnt.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1"); 
} 

閱讀所有接觸火下列事件之後。您可以閱讀多個聯繫電話,電子郵件等。

void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e) 
{ 
    foreach (var item in e.Results) { 
     var contact = new PhoneContact(); 
     contact.Name = item.DisplayName; 
     foreach (var pn in item.PhoneNumbers) 
      contact.Number = string.IsNullOrEmpty(contact.Number) ? pn.PhoneNumber : (contact.Number + " , " + pn.PhoneNumber); 
     foreach (var ea in item.EmailAddresses) 
      contact.Email = string.IsNullOrEmpty(contact.Email) ? ea.EmailAddress : (contact.Email + " , " + ea.EmailAddress); 
     phoneContact.Add(contact); 
    } 
}