2011-01-30 32 views

回答

1

不幸的是,聯繫人API未在當前版本的API中公開。你可以使用的東西從任務命名空間得到最接近:
http://msdn.microsoft.com/en-us/library/ff428753(v=VS.92).aspx

兩個你可以看看是PhoneNumberChooseTaskEmailAddressChooserTask

或者,由於所有WP7手機都使用實時聯繫人進行無線同步,因此您可以隨時調查網絡請求並訪問Windows Live Contacts API。我明白這可能不是你要找的東西,但它現在可能是最好的選擇。

+0

我希望OS的未來版本將允許更好的集成聯繫以允許應用程序做更多。 – 2011-03-23 17:16:51

0

您可以讓用戶通過使用PhoneNumberChooserTask(例如,SDK 7.0),然後從他們的聯繫人列表一次一個聯繫人:
http://msdn.microsoft.com/en-us/library/ff769543(v=vs.92).aspx#BKMK_Phone

此外,在新的Windows Phone SDK 7.1版的Beta (又名芒果)現在可以訪問所有手機的聯繫人:
http://www.ginktage.com/2011/05/how-to-retreive-all-contacts-from-windows-phone-7-using-c/

注:我聽說MS不允許在芒果開發的應用被釋放到應用商店,直到2011年秋季

2

這是一個在Windows手機OS可行7.1

這裏有How To Access Contact List Data For Windows Phone

MSDN文章在這裏是一個從文章的代碼片段:

using Microsoft.Phone.UserData; 

private void ButtonContacts_Click(object sender, RoutedEventArgs e) 
{ 
    Contacts cons = new Contacts(); 

    //Identify the method that runs after the asynchronous search completes. 
    cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted); 

    //Start the asynchronous search. 
    cons.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1"); 
} 

void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e) 
{ 
    //Do something with the results. 
    MessageBox.Show(e.Results.Count().ToString()); 
} 
3

隨着Windows Phone 7的SDK的早期版本,它只能通過選擇器檢索電話號碼或電子郵件地址以及其他信息。現在,隨着7.1芒果SDK,它可以從聯繫人檢索更多的信息,如AddressDisplayNameEmailAddresses

我會告訴你如何檢索使用C#從Windows Phone 7的所有聯繫人。

Contacts類在命名空間Microsoft.Phone.UserData中定義,並從PhoneDataSharingContext擴展並提供了一些用於與用戶的聯繫人數據交互的方法和事件。

public MainPage() 
{ 
InitializeComponent(); 
Contacts objContacts = new Contacts(); 
objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted); 
objContacts.SearchAsync(string.Empty, FilterKind.None, null); 
} 
void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e) 
{ 
foreach (var result in e.Results) 
{ 
lst.Add("Name : " + result.DisplayName + " ; Phone Number : " + result.PhoneNumbers.FirstOrDefault()); 
} 
} 

Contacts也可以使得用戶能夠搜索與SearchAsync方法接觸。 FilterKind確定將用於過濾的字段,如PhoneNumber,DisplayNameEmailAddress等。如果是None,則它可以列出所有聯繫人。

請注意,我已經使用了仿真器,因爲我目前沒有芒果設備。

public partial class MainPage : PhoneApplicationPage 
{ 
// Constructor 
public MainPage() 
{ 
InitializeComponent(); 
Contacts objContacts = new Contacts(); 
objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted); 
objContacts.SearchAsync(string.Empty, FilterKind.None, null); 
} 

void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e) 
{ 
var ContactsData = from m in e.Results 
select new MyContacts 
{ 
DisplayName = m.DisplayName, 
PhoneNumber = m.PhoneNumbers.FirstOrDefault() 
}; 
var MyContactsLst = from contact in ContactsData 
group contact by contact.DisplayName into c 
orderby c.Key 
select new Group<MyContacts>(c.Key, c); 
longlist1.ItemsSource = ContactsData; 
} 
} 
public class MyContacts 
{ 
public string DisplayName { get; set; } 
public ContactPhoneNumber PhoneNumber { get; set; } 
} 
相關問題