![](/img/trans.png)
[英]How to get all contacts list after adding contact to my app contact store in Windows Phone 8.1 RT?
[英]Integrating contact list for windows 7 phone into app
如何获取Windows 7手机的联系人列表以在Win7手机应用程序中使用?
使用Windows Phone 7 SDK的早期版本,只能使用Choosers检索电话号码或电子邮件地址,还有更多信息。 现在,使用7.1 Mango SDK,可以从联系人中检索更多信息,例如Address
, DisplayName
, EmailAddresses
等。
我将向您展示如何使用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
, DisplayName
或EmailAddress
等。当它为None
,它可以列出所有联系人。
请注意,由于我目前没有配备Mango的设备,因此我使用了模拟器。
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; }
}
在Windows Phone OS 7.1中可行
这是有关如何访问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());
}
不幸的是,contacts API在当前版本的API中未公开。 您可以获得的最接近的是使用Tasks名称空间中的某些内容:
http://msdn.microsoft.com/en-us/library/ff428753(v=VS.92).aspx
您可以查找的两个是PhoneNumberChooseTask和EmailAddressChooserTask 。
另外,由于所有WP7手机都使用实时联系人进行空中同步,因此您始终可以进行网络请求并访问Windows Live Contacts API 。 我了解这可能不是您要查找的内容,但这可能是目前最好的选择。
您可以使用PhoneNumberChooserTask(例如SDK 7.0)让用户一次从其联系人列表中选择一个联系人:
http://msdn.microsoft.com/en-us/library/ff769543(v=vs.92).aspx#BKMK_Phone
另外,在新的Windows Phone SDK 7.1版本(即Mango)的Beta中,现在可以访问所有电话的联系人:
http://www.ginktage.com/2011/05/how-to-retreive-all-contacts-from-windows-phone-7-using-c/
注意:我听说MS不允许在2011年秋季之前将用Mango开发的应用发布到应用商店中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.