Как получить список контактов телефона с Windows 7 для использования в телефонном приложении Win7?
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; }
}
Это выполнимо в ОС 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());
}
К сожалению, API контактов не отображается в текущей версии API. Самое близкое, что вы можете получить, это использовать что-то из пространства имен Tasks:
http://msdn.microsoft.com/en -us/library/ff428753(v=VS.92).aspx
Вы можете искать два: PhoneNumberChooseTask и Задача Выбора Адреса электронной почты.
В качестве альтернативы, поскольку все телефоны WP7 используют живые контакты для синхронизации по воздуху, вы всегда можете просто исследовать выполнение веб-запроса и доступ к API контактов Windows Live. Я понимаю, что это, вероятно, не то, что вы ищете, но это, вероятно, лучший вариант прямо сейчас.
Вы можете предложить пользователю выбрать контакт из своего списка контактов по одному с помощью 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 года.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.