Блог Сергея Байдачного

Мой блог о технологиях

Контакты и календарь в Windows Phone 7.5

2 комментария

Продолжаю рассказывать про возможности интеграции приложений с Windows Phone 7.5. На этот раз поговорим о календаре и контактах, а именно, о чтении информации из списка контактов и календаря. Если Вы решили сохранить контакт, то тут можно использовать класс SaveContactTask, который позволит инициировать вызов стандартного приложения.

Итак, как я писал ранее, чтобы получить доступ к данным пользователя, необходимо явно запросить это разрешение либо в начале приложения, либо перед самим доступом к данным. При этом должен быть механизм, позволяющий пользователю запретить доступ. В дополнении к этому, манифест приложения должен декларировать следующие возможности: ID_CAP_CONTACTS – для контактов, ID_CAP_APPOINTMENTS – для календаря.

Прописав все возможности и получив доступ со стороны пользователя можно перейти к работе с контактами и календарем. Все необходимые классы содержаться в пространстве имен Microsoft.Phone.UserData. По большому счету тут два основных класса, это Contacts и Appointments. Именно с них начинается работа. Так, необходимо создать объекты необходимых классов, определить обработчики события SearchCompleted и запустить процедуру выбора контактов с помощью метода SearchAsync. С помощью последнего, запускается механизм поиска, заложенный внутри платформы, и разработчик получает доступ к результирующим данным.

Если говорить о параметрах метода SearchAsync, то в случае календаря, это параметры типа DateTime, которые задают промежуток времени, за который нужно выбрать записи. Третий параметр позволяет передать произвольный объект, который будет переброшен обработчику события SearchCompleted. Этот объект можно использовать на свое усмотрение, например, идентифицировать результат запроса по имени (если у Вас много запросов).

В случае контактов, метод SearchAsync также принимает три параметра. Третий параметр также представляет собой произвольный объект, а вот первый и второй – позволяют задать критерии поиска в списке контактов. Так, первый параметр задает строку для поиска (если она не нужна, то можно указать String.Empty), а второй – тип поиска. Тип поиска представляет собой объект перечислимого типа, принимающего одно из значений:

· None – возвращает все контакты;

· PinnedToStart – возвращает все контакты, привязанные к основному окну телефона;

· EmailAddresses – позволяет выполнять фильтрацию по Email адресам;

· PhoneNumber – позволяет выполнять фильтрацию по номерам телефонов;

· DisplayName – позволяет выполнять фильтрацию по имени контакта.

Естественно, что полученные результаты (в виде списка объектов Contact или Appointment) можно обрабатывать дополнительно, используя LINQ или простой перебор.

Таким образом, работа с контактами и календарем не представляет сложности. Вот пример кода, который может выбирать контакты и записи из календаря, задавая фильтры:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    Microsoft.Phone.UserData.Contacts conts = 
         new Microsoft.Phone.UserData.Contacts();
    Appointments apps = new Appointments();

    conts.SearchCompleted += 
         new EventHandler<ContactsSearchEventArgs>(conts_SearchCompleted);
    conts.SearchAsync("B", FilterKind.DisplayName, "My Search 1");

    apps.SearchCompleted += 
         new EventHandler<AppointmentsSearchEventArgs>(apps_SearchCompleted);
    apps.SearchAsync(DateTime.Now, DateTime.Now.AddDays(7), "My Search 2");

}

void apps_SearchCompleted(object sender, AppointmentsSearchEventArgs e)
{
    try
    {
        appsList.ItemsSource = e.Results;
    }
    catch
    {

    }
}

void conts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
    try
    {
        contsList.ItemsSource = e.Results;
    }
    catch
    {

    }
}

 

В заключении отмечу, что классы Contacts и Appointments имеют свойство Accounts, позволяющее определить доступные источники данных (напомню, что WP 7 может объединять данные из таких источников как Exchange, Facebook, Live и др). Выбирая конкретный контакт или запись в календаре, разработчик получает доступ к аналогичному свойству, позволяющему определить источник данных для конкретного контакта или записи в календаре (кстати, источников может быть несколько).

Реклама

Written by Sergiy Baydachnyy

08.01.2012 в 10:40

Опубликовано в Windows Phone

Tagged with

комментария 2

Subscribe to comments with RSS.

  1. Отлично, спасибо.

    Alexandr

    08.01.2012 at 12:23

  2. Здравствуйте, предлагаем Вам услуги комплексного продвижения вашего сайта, подробнее с нашими услугами Вы можете ознакомиться по ссылке http://www.progon-sayta.ru/ Извините за беспокойство.


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: