Задачи запуска и задачи выбора
Основные теоретические сведения
Задачи запуска
Для того, чтобы использовать любую из задач запуска разработчику необходимо выполнить следующие шаги:
- Создать экземпляр класса задачи запуска.
- Установить свойства полученного объекта.
- Вызвать метод Show объекта.
Разработчику доступны следующие задачи запуска:
- PhoneCallTask — запускает приложение Телефон и задаёт номер телефона и отображаемое имя. При этом, программа не может инициировать звонок — это должен сделать пользователь;
- EmailComposeTask — запускает приложение электронной почты и создаёт новое письмо, которое пользователь может отправить;
- SmsComposeTask — запускает приложение Сообщения и выводит на экран новое SMS-сообщение, которое пользователь может отправить;
- SearchTask — запускает приложение Поиск в Интернете и задаёт поисковый запрос;
- WebBrowserTask — запускает веб-браузер и выводит на экран заданный URL;
- MediaPlayerLauncher — запускает медиапроигрыватель и воспроизводит заданный файл мультимедиа;
- MarketplaceReviewTask — запускает клиентское приложение Windows Phone Marketplace и отображает страницу обзора для указанного программного продукта;
- MarketplaceDetailTask — запускает клиентское приложение Windows Phone Marketplace и отображает страницу подробной информации для указанного программного продукта;
- MarketplaceHubTask — запускает клиентское приложение Windows Phone Marketplace;
- MarketplaceSearchTask — запускает клиентское приложение Windows Phone Marketplace и отображает результаты поиска по указанному запросу;
- BingMapsDirectionsTask — запускает приложение Bing Maps и задаёт начальный и конечный пункты маршрута;
- BingMapsTask — запускает приложение Bing Maps и выводит на экран карту по текущему или заданному расположению;
- ConnectionSettingsTask — позволяет пользователям изменять настройки подключения телефона;
- ShareStatusTask — позволяет отображать сообщение о состоянии, которое пользователь может отправить в выбранные социальные сети;
- ShareLinkTask — позволяет пользователю опубликовать URL в выбранных социальных сетях.
Создайте новый проект из шаблона Windows Phone Application, как мы это уже делали в первой части и назовите его ExploreLaunchers. Обратите внимание, что весь код, для простоты, будем вставлять в страницу MainPage.xaml внутрь элемента Grid:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
Добавьте код в XAML файл, чтобы он выглядел следующим образом:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Orientation="Horizontal"> <StackPanel Width="240"> <Button Name="EMailMe" Width="190" Height="75" Content="E-mail" Click="EMailMe_Click"/> <Button Name="AppDetails" Width="190" Height="75" Content="Программа" Click="AppDetails_Click"/> <Button Name="MarketHub" Width="190" Height="75" Content="Рынок" Click="MarketHub_Click" /> <Button Name="MarketSearch" Width="190" Height="75" Content="Поиск по ..." Click="MarketSearch_Click"/> <Button Name="MediaPlayer" Width="190" Height="75" Content="Плеер" Click="MediaPlayer_Click"/> </StackPanel> <StackPanel Width="240"> <Button Name="PhoneCall" Width="190" Height="75" Content="Звонок" Click="PhoneCall_Click"/> <Button Name="Search" Width="190" Height="75" Content="Искать" Click="Search_Click"/> <Button Name="SendSms" Width="190" Height="75" Content="SMS" Click="SendSms_Click"/> <Button Name="WebBrowse" Width="190" Height="75" Content="Веб" Click="WebBrowse_Click"/> </StackPanel> </StackPanel> </Grid>
Добавьте в блок using следующий модуль:
using Microsoft.Phone.Tasks;
Сразу после конструктора MainPage добавьте следующий код:
private void EMailMe_Click(object sender, RoutedEventArgs e) { EmailComposeTask compose = new EmailComposeTask(); compose.To = "rush4apps@microsoft.com"; compose.Body = " Я хочу участвовать в акции"; compose.Show(); } private void AppDetails_Click(object sender, RoutedEventArgs e) { MarketplaceDetailTask marketDetails = new MarketplaceDetailTask(); marketDetails.ContentType = MarketplaceContentType.Applications; marketDetails.ContentIdentifier = "введите идентификатор приложения"; marketDetails.Show(); } private void MarketHub_Click(object sender, RoutedEventArgs e) { MarketplaceHubTask marketHub = new MarketplaceHubTask(); marketHub.ContentType = MarketplaceContentType.Applications; marketHub.Show(); } private void MarketSearch_Click(object sender, RoutedEventArgs e) { MarketplaceSearchTask marketSearch = new MarketplaceSearchTask(); marketSearch.ContentType = MarketplaceContentType.Applications; marketSearch.SearchTerms = "GPSInfo"; marketSearch.Show(); } private void MediaPlayer_Click(object sender, RoutedEventArgs e) { MediaPlayerLauncher player = new MediaPlayerLauncher(); player.Controls = MediaPlaybackControls.Stop; player.Media = "укажите URI, с которого будет воспроизводиться контент"; player.Show(); } private void PhoneCall_Click(object sender, RoutedEventArgs e) { PhoneCallTask call = new PhoneCallTask(); call.DisplayName = "Главному разработчику"; call.PhoneNumber = "+7 555 555 5555"; call.Show(); } private void Search_Click(object sender, RoutedEventArgs e) { SearchTask search = new SearchTask(); search.SearchQuery = "rush4apps"; search.Show(); } private void SendSms_Click(object sender, RoutedEventArgs e) { SmsComposeTask sms = new SmsComposeTask(); sms.Body = "Windows Phone 7 - отличная платформа!"; sms.Show(); } private void WebBrowse_Click(object sender, RoutedEventArgs e) { WebBrowserTask web = new WebBrowserTask(); web.Uri = new Uri("http://msdn.com/ru-ru/"); web.Show(); }
Мы добавили кнопок по количеству демонстрируемых задач загрузки и в обработчике соответствующей кнопки вызываем интерфейс задачи загрузки. Некоторые из задач загрузки будут работать только на реальном устройстве.
Запустите приложение и посмотрите, как работают задачи запуска.
Задачи выбора
Для того, чтобы использовать любую из задач выбора разработчику необходимо выполнить следующие шаги:
- Создать экземпляр класса задачи запуска.
- Добавить обработчик события Completed.
- Установить свойства полученного объекта.
- Вызвать метод Show объекта.
- Получить данные от задачи выбора в обработчике события Completed.
Разработчику доступны следующие задачи выбора:
- CameraCaptureTask — запускает приложение Камера и позволяет пользователю создавать фотографии в приложении;
- EmailAddressChooserTask — запускает приложение Контакты и позволяет пользователю выбирать адрес электронной почты контакта;
- PhoneNumberChooserTask — запускает приложение Контакты и позволяет пользователю выбирать номер телефона контакта;
- PhotoChooserTask — запускает приложение Выбор фотографий и позволяет пользователю выбирать фотографии;
- SaveEmailAddressTask — запускает приложение Контакты и позволяет пользователю сохранять указанный адрес электронной почты в новый или существующий контакт;
- SavePhoneNumberTask — запускает приложение Контакты и позволяет пользователю сохранять указанный номер телефона в новый или существующий контакт;
- AddressChooserTask — запускает приложение Контакты и позволяет пользователю выбирать адрес контакта;
- GameInviteTask — позволяет пользователю приглашать игроков для совместной игры;
- SaveContactTask — предоставляет методы и события для запуска приложения Контакты и позволяет пользователю сохранять контакты;
- SaveRingtoneTask — запускает приложение мелодий звонков и позволяет пользователю сохранять аудиофайл в список системных мелодий телефона.
Создайте новый проект из шаблона Windows Phone Application, как мы это уже делали в первой части и назовите его ExploreChoosers. Обратите внимание, что весь код, для простоты, будем вставлять в страницу MainPage.xaml внутрь элемента Grid:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
Добавьте код в XAML файл, чтобы он выглядел следующим образом:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel> <Button Width="190" Height="75" Name="Camera" Content="Камера" Click="Camera_Click"/> <Button Width="190" Height="75" Name="Email" Content="EMail" Click="Email_Click"/> <Button Width="190" Height="75" Name="Phone" Content="Телефон" Click="Phone_Click"/> <Button Width="190" Height="75" Name="ChoosePhoto" Content="Фото" Click="ChoosePhoto_Click"/> <Button Width="190" Height="75" Name="SaveEMail" Content="Сохр. EMail" Click="SaveEMail_Click"/> <Button Width="190" Height="75" Name="SavePhone" Content="Сохр. тел." Click="SavePhone_Click"/> </StackPanel> </Grid>
Добавьте в блок using следующий модуль.
using Microsoft.Phone.Tasks;
Сразу после конструктора MainPage добавьте следующий код:
private void Camera_Click(object sender, RoutedEventArgs e) { CameraCaptureTask camera = new CameraCaptureTask(); camera.Completed += new EventHandler<PhotoResult>(camera_Completed); camera.Show(); } void camera_Completed(object sender, PhotoResult e) { if (e.TaskResult == TaskResult.OK) MessageBox.Show("Имя файла:" + e.OriginalFileName); } private void Email_Click(object sender, RoutedEventArgs e) { EmailAddressChooserTask email = new EmailAddressChooserTask(); email.Completed += new EventHandler<EmailResult>(email_Completed); email.Show(); } void email_Completed(object sender, EmailResult e) { if (e.TaskResult == TaskResult.OK) MessageBox.Show(e.Email); } private void Phone_Click(object sender, RoutedEventArgs e) { PhoneNumberChooserTask phone = new PhoneNumberChooserTask(); phone.Completed += new EventHandler<PhoneNumberResult>(phone_Completed); phone.Show(); } void phone_Completed(object sender, PhoneNumberResult e) { if (e.TaskResult == TaskResult.OK) MessageBox.Show(e.PhoneNumber); } private void ChoosePhoto_Click(object sender, RoutedEventArgs e) { PhotoChooserTask photo = new PhotoChooserTask(); photo.Completed += new EventHandler<PhotoResult>(photo_Completed); photo.Show(); } void photo_Completed(object sender, PhotoResult e) { if (e.TaskResult == TaskResult.OK) MessageBox.Show(e.OriginalFileName); } private void SaveEMail_Click(object sender, RoutedEventArgs e) { SaveEmailAddressTask saveEmail = new SaveEmailAddressTask(); saveEmail.Completed += new EventHandler<TaskEventArgs>(saveEmail_Completed); saveEmail.Email = "rush4apps@microsoft.com"; saveEmail.Show(); } void saveEmail_Completed(object sender, TaskEventArgs e) { if (e.TaskResult == TaskResult.OK) MessageBox.Show("EMail сохранен!"); } private void SavePhone_Click(object sender, RoutedEventArgs e) { SavePhoneNumberTask savePhone = new SavePhoneNumberTask(); savePhone.Completed += new EventHandler<TaskEventArgs>(savePhone_Completed); savePhone.PhoneNumber = "+7 495 555 5555"; savePhone.Show(); } void savePhone_Completed(object sender, TaskEventArgs e) { if (e.TaskResult == TaskResult.OK) MessageBox.Show("Номер сохранен!"); }
Мы добавили кнопок по количеству демонстрируемых задач выбора и в обработчике соответствующей кнопки регистрируем обработчик события Completed и вызываем интерфейс задачи выбора.
Запустите приложение и посмотрите, как работают задачи выбора.
Дополнительные материалы
Windows Phone 7.5 Training Kit: Labs\LaunchersAndChoosers\LaunchersAndChoosers.html\html\ DocSet_default.html.
Задание к работе
- Откройте в Visual Studio созданный в одной из предыдущих работ проект программы для Windows Phone или создайте новый проект.
- Добавьте необходимый код для вызова одной из задач запуска с передачей параметров, введённых пользователем (например, создание нового сообщения).
- Добавьте необходимый код для вызова одной из задач выбора (например, выбор записи из приложения Контакты) и использования информации о выбранном объекте в программе (например, вывода информации на экран или использование при создании задачи запуска).
- Запустите программу и проверьте правильность её работы.
- Составьте отчёт о проделанной работе. Включите в отчёт необходимые листинги программы.