Как получить список контактов телефона с Windows 7 для использования в телефонном приложении Win7?

2
Reggie 30 Янв 2011 в 05:34

4 ответа

В более ранней версии Windows Phone 7 SDK можно было получить только номер телефона или адрес электронной почты и еще несколько с помощью Choosers. Теперь с Mango SDK 7.1 можно получить больше информации от контакта, например Address, DisplayName, EmailAddresses и т. д.

Я покажу вам, как получить все контакты из Windows Phone 7 с помощью C#.

Класс 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; }
}
3
Andriy M 2 Янв 2013 в 11:26

Это выполнимо в ОС Windows Phone 7.1.

Вот статья MSDN о Как получить доступ к данным списка контактов для Windows Phone

А вот фрагмент кода из статьи:

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());
}
2
Chris Ching 18 Окт 2011 в 05:53

К сожалению, API контактов не отображается в текущей версии API. Самое близкое, что вы можете получить, это использовать что-то из пространства имен Tasks:
http://msdn.microsoft.com/en -us/library/ff428753(v=VS.92).aspx

Вы можете искать два: PhoneNumberChooseTask и Задача Выбора Адреса электронной почты.

В качестве альтернативы, поскольку все телефоны WP7 используют живые контакты для синхронизации по воздуху, вы всегда можете просто исследовать выполнение веб-запроса и доступ к API контактов Windows Live. Я понимаю, что это, вероятно, не то, что вы ищете, но это, вероятно, лучший вариант прямо сейчас.

1
Joel Martinez 30 Янв 2011 в 07:55
Я надеюсь, что будущие версии ОС позволят улучшить интеграцию с контактами, чтобы приложения могли делать больше.
 – 
John Egbert
23 Мар 2011 в 20:16

Вы можете предложить пользователю выбрать контакт из своего списка контактов по одному с помощью PhoneNumberChooserTask (пример, SDK 7.0):
http://msdn.microsoft.com/ en-us/library/ff769543(v=vs.92).aspx#BKMK_Phone

Кроме того, в бета-версии нового выпуска Windows Phone SDK 7.1 (он же Mango) теперь можно получить доступ ко всем контактам телефона:
http: //www.ginktage.com/2011/05/how-to-rereve-all-contacts-from-windows-phone-7-using-c/

Примечание. Я слышал, что MS не разрешает выпускать приложения, разработанные в Mango, в магазин приложений до осени 2011 года.

0
GraehamF 7 Июн 2011 в 11:32