- Android intent call phone
- Некоторые возможности использования Intent’ов
- Введение
- Как совершать звонки и использовать SMS в Android приложениях
- 1. Как совершить звонок
- Создание нового проекта в Android Studio
- Макет экрана
- Измените класс MainActivity
- 2. Отслеживание событий телефонного звонка
- Добавим разрешение
- Создайте объект PhoneStateListener
- Состояние прослушивания телефонного звонка
- Как использовать эмулятор, звонить и отправлять SMS сообщения
- 3. Отслеживание событий телефонного звонка в фоновом режиме
- Создание BroadcastReceiver
- Изменим AndroidManifest.xml
- Отслеживание исходящих звонков
- 4. Отправка SMS-сообщений
- Настройка макета
- Изменение MainActivity
- Запуск приложения
- 5. Отправка SMS сообщения напрямую
- Добавляем разрешения в AndroidManifest.xml
- Изменяем класс MainActivity
- 6. Получение SMS сообщения
- Добавим разрешение
- Создание получателя вещания
- Заключение
- Датчики Android: Близость и Гироскоп
- 6 ДА и НЕТ, для достижения отличного пользовательского опыта с Android
- Фоновый звук в Android с MediaSessionCompat
- Изменение Android приложения под Материальный Дизайн
Android intent call phone
Полный текст статьи и исходники программы доступны только зарегистрированным участникам сайта.
Прочитайте внимательно условия! В начале каждой статьи указывается, к какому курсу относится данная статья. Например, если статья из 4 курса, значит нужно заплатить за все курсы по четвёртый включительно.
Стоимость регистрации — символические 350 рублей. После регистрации у вас будет доступ ко второму курсу.
Для регистрации сначала необходимо пополнить ЮMoney(бывший Яндекс.Кошелек) 410011383280263 на указанную сумму (или Webmoney-кошелек P894989790291 (старый R390884954122) или QIWI (перевод по никнейму), а затем прислать письмо на адрес alexander.klimoff@gmail.com с указанием, на какой кошелёк вы делали оплату и реквизиты, по которым можно вас определить (не прикрепляйте к письму картинки или файлы). Учитывайте комиссию при переводах.
Не присылайте в письме мои номера кошельков — поверьте, я их знаю и без вас.
В ответном письме вы получите учётные данные для чтения статей из закрытой зоны за второй курс.
Доступ к третьему курсу обучения доступен только после оплаты второго курса и составляет 350 руб.
Доступ к четвёртому курсу обучения доступен после оплаты третьего курса и составляет 350 руб. и т.д.
При оплате сразу всех курсов одновременно (2-9) цена составит 2800 руб.
Доступ даётся как минимум на один год. Для тех, кто оплатил третий и другие курсы, сроки доступа увеличиваются.
Также возможен приём на PayPal (только для зарубежных пользователей). Обратите внимание, что в этом случае стоимость одного курса составляет 7$.
Источник
Некоторые возможности использования Intent’ов
Введение
Объекты типа Intent могут быть использованы для общения между отдельными частями Android приложения, либо между различными приложениями системы. Мощь механизма интентов заключается в том, что с его помощью можно обращаться к любому установленному в системе приложению. Это позволяет повторно использовать некоторые компоненты и значительно сократить время на разработку.
В этой статье я покажу некоторые возможности использования класса Intent для обращения к системным приложениям.
Итак, что можно сделать с помощью Intenta:
1. Позвонить
Необходимо также добавить разрешение совершать звонки:
Либо разрешение для экстренных вызовов:
Звонки можно также совершать, указав интенту первый параметр как ACTION_DIAL. При этом будет открываться телефонная книга с указанным номером, но сам звонок автоматически совершаться не будет. Этому параметру не нужны разрешения в манифесте.
2. Отправить смс
Т.к. этот код не отправляет смс напрямую, а запускает стандартное активити для отправки смс, то никаких разрешений указывать не нужно.
3. Получить контакт из телефонной книги
Этот код откроет стандартное приложение контактов. Метод startActivityForResult позволяет получить uri выбранного контакт из параметра Intent data переопределенного метода onActivityResult.
Приведенный выше код показывает в приложении контактов сразу все контакты пользователя, включая почтовые. Если необходимо выбрать только контакт из телефонной книги, можно воспользоваться следующим кодом:
Для чтения списка контактов необходимо также добавить в манифест разрешение:
4. Открыть ссылку в браузере
Данный код откроет переданную в параметре ссылку в одном из установленных браузеров. При этом пользователь сможет сам выбрать браузер для просмотра. Eсли ссылка ведет на YouTube, то можно сразу открыть видео стандартным YouTube приложением.
С помощью этого интента можно также открыть стандартный клиент Android Market с ссылкой на какое-либо приложение. Для этого необходимо в параметр uri передать ссылку вида market://search?q=search query, где search query необходимо заменить соответствующим поисковым запросом.
Разрешения на интернет указывать не нужно, т.к. сеть используется не напрямую, а через приложение браузер.
5. Расшарить контент/написать письмо
Интенту можно задать тему и текст контента, который необходимо разшарить. Метод Intent.createChooser() создает диалог выбора соответствующего приложения.
Если необходимо разшарить медиа контент (изображение/видео), то нужно указать соответствующий тип контента в методе setType, например mailIntent.setType(«image/png»);, а также добавить сам контент в extra интента:
С помощью этого интента можно также отправить электронную почту по конкретному адресу:
6. Открыть карту по определенным координатам либо запросу
Uri при этом можно модифицировать, указывая другие параметры:
- geo:latitude,longitude
- geo:latitude,longitude?z=zoom Параметр z — уровень зума при отображении карты (от 0 до 23)
- geo:0,0?q=my+street+address
- geo:0,0?q=business+near+city
7. Сделать снимок с камеры
Этот код запускает стандартное приложение камеры. Полученное с камеры изображение можно обработать в методе onActivityResult:
Изображение, полученное с камеры при этом можно сохранить в конкретной директории, добавив параметр в интент:
Для использования этого интента не нужно разрешения android.permission.CAMERA, т.к. камера используется не напрямую, а всего лишь вызывается встроенное приложение камеры. Однако рекомендуется добавить в AndroidManifest следующую строку:
Таким образом, люди с девайсами без встроенной камеры (судя по всему, такое тоже бывает) не будут видеть ваше приложение на маркете.
8. Позвонить какому-либо контакту через Skype
Для совершения звонка через скайп интенту необходимо указать конкретное имя активити и пакета, к которым он будет обращаться. Это немного усложняет код, т.к. в двух разных версиях скайпа имена пакетов отличаются. Необходимо выполнять проверку того, какая версия скайп клиента установлена в системе, и установлена ли она вообще. Для проверки можно использовать следующий метод:
Этот метод проверяет в системе наличие приложения, способного ответить на конкретный интент. С использованием этого метода код звонка через скайп будет выглядеть следующим образом:
Более простым методом проверки наличия приложения в системе является перехват ActivityNotFoundException, которое будет вылетать в методе startActivity. Однако это позволит всего лишь среагировать на проблему, но не предотвратить ее. Например, используя вышеприведенный метод isIntentAvailable можно вовремя сделать соответствующий контрол неактивным, либо перенаправить пользователя на Android Market для установки соответствующего приложения.
9. Использовать Speech to Text для распознавания голоса
Этот код запускает приложение распознавания речи. Если произнести что-либо, система обработает голос и вернет результат в метод onActivityResult:
Источник
Как совершать звонки и использовать SMS в Android приложениях
Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)
Из этого урока вы узнаете об Android Telephony и SMS API. Вы узнаете, как сделать звонок из вашего приложения и как отслеживать события телефонного звонок, а также как отправлять и получать SMS сообщения.
1. Как совершить звонок
Для начала, я покажу вам, как инициировать вызов из приложения с помощью номеронабирателя телефона или непосредственно из вашего приложения, чтобы сделать его проще для ваших пользователей.
Создание нового проекта в Android Studio
Запустите Android Studio и создайте новый проект с пустым активити под названием MainActivity .
Макет экрана
На данный момент, наш макет будет иметь только поля EditText и кнопку Вызова:
Измените класс MainActivity
В блоке кода ниже, создадим ACTION_DIAL , для отображения номеронабирателя. Номер телефона передается из tel от URI схемы: tel:XXXXXXXX . Обратите внимание, что вам не нужны разрешения для этой работы:
Если вы запустите приложение и нажмёте кнопку набора (dial), вы увидите номеронабиратель и там вы должны набрать номер. Вы можете изменить это, чтобы на самом деле совершить звонок из вашего приложения, просто заменив назначение ACTION_DIAL на ACTION_CALL . Однако, это потребует разрешение android.permission.CALL_PHONE .
2. Отслеживание событий телефонного звонка
В этом разделе мы собираемся узнать, как отслеживать события телефонного звонка в системе Android. Телефон может находиться в трех состояниях:
- простоя (когда он не используется)
- звонка (когда есть входящий звонок)
- снято (когда отвечаете на звонок)
Добавим разрешение
Нам нужно разрешение READ_PHONE_STATE , чтобы иметь возможность отслеживать состояние телефона. Добавим его в AndroidManifest.xml:
Создайте объект PhoneStateListener
Мы создаем объект класса PhoneStateListener и затем переопределим его метод onCallStateChanged() (в IntelliJ, это легко сделать это с помощью Control-O, а затем выберите или поищите метод). Мы будем обрабатывать изменения состояния звонка, отображая Toast . Обратите внимание, что мы также можем получить доступ к номеру телефона входящего звонка, когда срабатывает этот метод:
В зависимости от потребностей вашего приложения, можно также переопределить один из этих методов событий: onCellInfoChanged() , onCallForwardingIndicatorChanged() , onCellLocationChanged() или onSignalStrengthChanged() .
Состояние прослушивания телефонного звонка
Чтобы начать прослушивание телефонного звонка, нам нужно получить TelephonyManager от системной службы и инициализировать его в onCreate() .
В методе onResume() мы можем начать слушать с помощью метода listen() TelephonyManager , передавая ему экземпляр PhoneStateListener и статическую LISTEN_CALL_STATE . Мы останавливаем прослушивание методом onStop() , передавая LISTEN_NONE в качестве второго аргумента для listen() .
Другие возможные варианты прослушивания телефона LISTEN_CELL_LOCATION , LISTEN_SIGNAL_STRENGTH , LISTEN_CALL_FORWARDING_INDICATOR и LISTEN_CELL_INFO .
Итак, запустите приложение и убедитесь, что приходит входящий звонок.
Отслеживание будет работать только, когда приложение активно. Чтобы заставить работать его в фоновом режиме (когда наше приложение не запущено), нам нужно будет создать BroadcastReceiver , так что даже если приложение не запущено, мы все еще можем отслеживать состояние телефонного звонка. В зависимости от требований приложения, это может быть лучшим способом получать изменения состояния звонка. Я покажу вам, как сделать это в следующем разделе.
Имейте в виду, что мы отслеживаем только входящие звонки. Для отслеживания исходящих звонков, нам потребуются дополнительные разрешения. Чтобы отслеживать исходящие звонки, добавьте следующую строку в ваш файл AndroidManifest.xml.
Как использовать эмулятор, звонить и отправлять SMS сообщения
Можно использовать эмулятор для имитации вызова или отправки SMS-сообщения, но вам нужно будет немного его настроить. Открыть свой эмулятор, нажмите на последнюю кнопку на панели навигации справа, чтобы открыть диалоговое окно дополнительных элементов управления и затем выберите кнопку управления телефона.
3. Отслеживание событий телефонного звонка в фоновом режиме
Создание BroadcastReceiver
Так же, как и в предыдущем разделе, нам нужно создать прослушиватель событий для отслеживания изменений состояний телефона. Основным отличием в том, что на этот раз мы будем расширять базовый класс BroadcastReceiver , чтобы мы могли получить состояние прослушивания телефонного звонка, даже если приложение не запущено. Убедитесь, что зарегистрировали слушателя не более одного раза! Наша проверка для этого находится в строке 36.
Изменим AndroidManifest.xml
BroadcastReceiver работает, только если он зарегистрирован. Нам нужно рассказать системе Android о нашем BroadcastReceiver, зарегистрировав его в файле AndroidManifest.xml, подключив наш класс PhoneCallStateReceiver к описывающий системе вещания, что, в данном случае, мы хотим получить — PHONE_STATE .
Отслеживание исходящих звонков
Для исходящих звонков, вам нужно включить действие NEW_OUTGOING_CALL в в приемник в AndroidManifest.xml.
Чтобы получить номер телефона исходящего звонка, в методе onReceive(Context, Intent) , мы получаем номер как экстра. Для предотвращения вызова, мы можем вызвать setResultData() и передать ему аргумент null. ResultData используется в качестве фактического номера для вызова.
Вы можете узнать больше о трансляции и broadcast receivers в нашем учебнике здесь на Envato Tuts+:
4. Отправка SMS-сообщений
У вас есть только два основных варианта для отправки SMS: использование SMS приложение вашего устройства или в обход его, отправив SMS прямо из вашего приложения. Мы посмотрим оба сценария, и вы можете решить, какой из них лучше использовать в вашем случае. Давайте начнем с отправки SMS с помощью приложения SMS вашего устройства.
Настройка макета
Во-первых нам нужно изменить наш основной макет, чтобы там были: поле EditText для сообщения и кнопка Отправить Сообщение.
Изменение MainActivity
Внутри метода onCreate() в классе MainActivity , задайте ACTION_SENDTO как первый аргумент и smsto:
в качестве второго аргумента. Текстовое сообщение будет значением экстра sms_body :
Тут. SMS клиент будет отслеживать статус доставки сообдения.
Запуск приложения
Когда заполнены все необходимые поля, нажатие на кнопку Отправка SMS, откроет SMS клиента или даст пользователю выбрать приложение, если оно уже не выбрано.
5. Отправка SMS сообщения напрямую
Далее, давайте посмотрим, как отправить SMS напрямую из нашего приложения, вместо использования SMS клиента.
Добавляем разрешения в AndroidManifest.xml
Как обычно, нам нужно зарегистрировать разрешение в AndroidManifest.xml.
Изменяем класс MainActivity
Далее, для Android 6.0 (API уровня 23) и выше, нужно запросить разрешение SEND_SMS во время выполнения.
Чтобы у знать больше об выполнении Android разрешений и как они изменились к версии 6.0, посмотрите наш урок на Envato Tuts+:
Для отправки SMS, мы получаем экземпляр SMSManager по умолчанию, а затем вызвать его метод sendTextMessage() , передавая туда телефонный номер в качестве первого аргумента, и сообщение в качестве второго аргумента:
Для отслеживания статуса доставки, метод sendTextMessage() SMSManager имеет два варианта параметров PendingIntent : sentIntent и deliveryIntent .
Если вы хотите использовать sentIntent , смотрите результат кода Activity.RESULT_OK на успешное выполнение, или один из RESULT_ERROR_GENERIC_FAILURE , RESULT_ERROR_RADIO_OFF и RESULT_ERROR_NULL_PDU для указания ошибки.
6. Получение SMS сообщения
Чтобы ваше приложение получало SMS сообщение от номера пользователя, лучше всего зарегистрировать получатель вещания, тогда можно будет получить уведомление о новом SMS, даже когда ваше приложение работает в фоне.
Добавим разрешение
Добавим разрешение RECEIVE_SMS в AndroidManifest.xml:
Далее нам нужно проверить и посмотреть, имеет ли приложение разрешение на получение SMS-сообщений во время выполнения. Поэтому в классе MainActivity , сделаем проверку на разрешение RECEIVE_SMS . Если его нет, его нужно запросить.
Создание получателя вещания
Мы извлекаем каждый объект из класса SmsMessage , используя метод createFromPdu(byte[] pdu) , передавая его PDU (блок данных протокола). Затем мы добавляем это в массив наших сообщений.
Для поддержки API 23 и выше, вы должны включить формат дополнительной строки (либо «3gpp» для GSM/UMTS/LTE сообщений в формате 3GPP или «3gpp2» для CDMA/LTE сообщений в формат 3GPP2).
Теперь запустите приложение, закройте его и отправьте SMS с эмулятора телефона.
Заключение
В этом уроке вы узнали о том, как:
- сделать вызов из приложения
- отслеживать события звонка телефона
- отправлять SMS сообщения, используя приложение устройства или напрямую из вашего приложения
- получение SMS сообщений в фоне
Есть гораздо больше того, что вы можете сделать с телефонными звонками и SMS сообщениями в Android. Посмотрите документацию по API Телефонии Android и API SMSManager, чтобы узнать больше.
В то же время, проверьте другие наши записи по разработке на Android!
Датчики Android: Близость и Гироскоп
6 ДА и НЕТ, для достижения отличного пользовательского опыта с Android
Фоновый звук в Android с MediaSessionCompat
Изменение Android приложения под Материальный Дизайн
Источник