Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 464 / 17 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 18:

Сервисы устройства: SMS, телефонная книга, электронная почта

Аннотация: Данная лабораторная работа посвящена работе с сервисами устройства: системой электронной почты, адресной книгой, SMS.

Цель работы: освоить методы работы с сервисами устройства

Общие сведения

Приложения для Windows Phone могут работать с сервисами телефона. Эта возможность реализована как с помощью некоторых API, таких, например, как программные интерфейсы для работы со списком контактов и календарем (http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202972(v=vs.105).aspx), так и с помощью специальных механизмов, называемых задачами выбора (Choosers) и задачами выполнения (Launchers).

При выполнении задачи выбора (например, при вызове системного интерфейса камеры) в приложение, после работы пользователя, возвращаются некие данные. При использовании задачи выполнения в нашем приложении производится подготовка задачи, задача вызывается, ей передаются подготовленные данные, а дальнейшая работа с ней наше приложение уже не затрагивает. Работу задачи выполнения контролирует пользователь. То есть, например, если мы вызвали задачу выполнения для отправки SMS-сообщения из нашего приложения, пользователь самостоятельно принимает окончательное решение о содержании сообщения и об его отправке. То же самое касается и многих других задач выполнения, сведения о которых можно найти в разделе документации "Launchers and Choosers for Windows Phone" ("Задачи выполнения и выбора для Windows Phone"), http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769542(v=vs.105).aspx. Механизм работы со всеми задачами выполнения строится по похожей схеме.

То, что приложения не могут самостоятельно отправлять SMS, совершать звонки, выполнять другие задачи, с одной стороны, ограничивает возможности разработчика, с другой же, повышает уровень безопасности системы, так как пользователь контролирует потенциально опасные операции, которые могут привести (если представить, что приложение, выполняющее подобные действия прошло сертификацию) к краже данных, к несанкционированному выполнению телефонных звонков и отправке SMS-сообщений.

Отправка электронных писем, СМС, совершение звонков из приложений

Рассмотрим задачи по отправке электронных писем, SMS, по совершению звонков из приложений, а так же – работу с адресной книгой телефона на примере приложения P18_1, рис. 51.1.

Проект приложения, демонстрирующего работу со службами телефона

увеличить изображение
Рис. 51.1. Проект приложения, демонстрирующего работу со службами телефона

Прежде чем разрабатывать подобное приложение, нужно соответствующим образом подготовить его манифест. В частности, здесь нам понадобятся такие возможности, как ID_CAP_CONTACTS и ID_CAP_PHONEDIALER

Демонстрация инициации отправки электронного письма из приложения показана на странице MailPage.xaml. На ней (Листинг 51.1) расположены три текстовых поля – для ввода адреса получателя, темы письма и текста письма.

<!--ContentPanel – поместите здесь дополнительное содержимое-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBox x:Name="txtEmail" 
HorizontalAlignment="Left" Height="72" Margin="0,10,0,0" TextWrapping="Wrap" 
Text="Кому" VerticalAlignment="Top" Width="456" InputScope="EmailSmtpAddress"
 GotFocus="txtEmail_GotFocus"/>
    <TextBox x:Name="txtSubject" HorizontalAlignment="Left" 
Height="72" Margin="0,87,0,0" TextWrapping="Wrap" 
Text="Тема" VerticalAlignment="Top" Width="456" GotFocus="txtSubject_GotFocus"/>
    <Button x:Name="btnSend" Content="Отправить" 
HorizontalAlignment="Left" Margin="0,525,0,0" 
VerticalAlignment="Top" RenderTransformOrigin="-0.476,0.79" 
Width="431" Click="btnSend_Click"/>
    <TextBox x:Name="txtEmailText" HorizontalAlignment="Left" 
Height="361" Margin="0,164,0,0" 
TextWrapping="Wrap" Text="Введите текст письма" VerticalAlignment="Top" Width="456" InputScope="Text" 
VerticalScrollBarVisibility="Auto" GotFocus="txtEmailText_GotFocus"/>
</Grid>
Листинг 51.1. Фрагмент кода страницы MailPage.xaml

Когда для поля происходит событие получения фокуса, вызывается обработчик, который, если в поле содержится текст, представляющий собой описание поля, очищает его. При нажатии на кнопку вызывается задача отправки письма. Этот код расположен в файле MailPage.xaml.cs, Листинг 51.2.

using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;

namespace P18_1
{
    public partial class MailPage : PhoneApplicationPage
    {
        public MailPage()
        {
            InitializeComponent();
        }
        //Очистка поля при первом переходе к нему
        private void txtEmail_GotFocus(object sender, RoutedEventArgs e)
        {
            if (txtEmail.Text == "Кому") txtEmail.Text = "";
        }

        private void txtSubject_GotFocus(object sender, RoutedEventArgs e)
        {
            if (txtSubject.Text == "Тема") txtSubject.Text = "";
        }

        private void txtEmailText_GotFocus(object sender, RoutedEventArgs e)
        {
            if (txtEmailText.Text == "Введите текст письма") txtEmailText.Text = "";
        }

        //Формирование письма и вызов задачи отправки письма
        private void btnSend_Click(object sender, RoutedEventArgs e)
        {
            EmailComposeTask emailComposer = new EmailComposeTask();
            emailComposer.To=txtEmail.Text;
            emailComposer.Subject=txtSubject.Text;
            emailComposer.Body=txtEmailText.Text;
            emailComposer.Show();
        }
    }
}
Листинг 51.2. Код файла MailPage.xaml.cs