Статьи

Телефон и СМС — до какой степени?

Windows Phone 7 API, как известно, довольно ограничен в некоторых случаях. Это применяется к доступу к внутренней файловой системе, а также к типу хранилища, которое можно использовать с телефоном. Тем не менее, это представляется пользователю на уровне абстракции. Та же идея применима и к самому телефону (как к механизму вызова), и к текстовым приложениям.

Если вы подумаете об этом, наложенное ограничение имеет смысл — вы, вероятно, не хотите, чтобы какое-либо приложение набирало или отправляло текст на дорогой (или международный) номер. Разработчики могут утверждать, что, в конце концов, существует WMAppManifest.xml, который позволяет разработчикам объявлять используемые возможности, и если что-то не объявлено, его нельзя использовать. Как бы просто это ни казалось, не забывайте, что Microsoft не проверяет исходный код во время процесса проверки приложения, поэтому было бы трудно проверить, что приложение действительно делает, если бы не было фактических сообщений о вредоносной активности.

При этом возникает вопрос — в какой степени вы действительно можете использовать номеронабиратель и SMS? В Microsoft.Phone.Tasks есть два класса: PhoneCallTask и SmsComposeTask , и вот как они работают.

PhoneCallTask

Это класс, который может использоваться, чтобы показать номеронабиратель с предустановленным номером. Вы не можете запустить процесс набора, но вы можете передать номер, который пользователю не придется набирать вручную (или записать его где-то по этой причине). 

Совет дня: следуя этому методу, вы на самом деле можете смоделировать возможности вызова в эмуляторе, которые в противном случае не могут быть запущены.

Итак, для начала вам нужно создать экземпляр класса PhoneCallTask ​​и передать ему номер телефона:

PhoneCallTask task = new PhoneCallTask();
task.PhoneNumber = "0000000";
task.Show();

Номер телефона здесь обязателен — если вы его не укажете, диалог номеронабирателя не будет отображаться. Вы также можете указать имя, которое будет связано с номером.

task.DisplayName = "Some Name";

Прежде чем начать набор, вот несколько вещей, которые нужно запомнить.

1) Вы не можете передавать сервисные коды, такие как * 37 #.

Сервисные коды могут быть введены только с клавиатуры телефона и не передаются приложением. Еще раз, причина этого — безопасность.

2) Если переданный номер телефона состоит из 65 (или более) цифр, вы увидите эту ошибку:

3) Если номер телефона длиной от 34 до 64 цифр, он также не будет работать:

В противном случае вы должны сначала увидеть вопрос о звонке:

Обратите внимание, что пользователь не обязан звонить по номеру. Если он примет задание, вы увидите знакомый интерфейс вызова. Вы не сможете использовать громкую связь, но вы получите представление о функциональности вызова в целом.

 

Вы даже можете добавить фальшивый вызов — номер может быть либо введен вами, либо получен из реальной истории телефона эмулятора:

Обратите внимание, что хотя Некоторое имя отсутствует в телефонной книге, оно будет указано как имя, а не номер в истории вызовов. Это относится ко всем вызовам, инициируемым вашим приложением, в котором есть DisplayProperty, связанный с номером.

На самом деле, в эмуляторе вы можете делать больше вещей — ОС довольно «заблокирована», но в некоторых случаях вы можете обойти вещи и получить вещи, к которым вы не должны были обращаться по умолчанию. Вот пример.

SmsComposerTask

Как и в случае с телефонным номеронабирателем, вы не можете форсировать процесс отправки. Но вы можете передать данные сообщения, которые готовы к отправке, такие как номер телефона и текстовое сообщение. Это просто делается путем создания экземпляра класса SmsComposerTask и установки основных свойств:

SmsComposeTask task = new SmsComposeTask();
task.To = "000000";
task.Body = "Well hello there!";
task.Show();

Конечно, вы можете отправить сообщение на поддельный номер, а также можете прикреплять и сохранять изображения из отправленных сообщений:

Вы даже можете перейти к части « Использовать как обои» (хотя на данный момент вы ее не видите). Просто нажмите на прикрепленное изображение и разверните панель приложения, чтобы увидеть опцию:

Это в значительной степени, насколько вы можете пойти с существующим SDK. Мы увидим, как все будет развиваться в следующем выпуске (или обновлении), но сейчас вам нужно убедиться, что приложение, над которым вы работаете, не использует автоматический вызов и отправку текстовых сообщений.