Сервисы устройства: 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.
Прежде чем разрабатывать подобное приложение, нужно соответствующим образом подготовить его манифест. В частности, здесь нам понадобятся такие возможности, как 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
