Пт, 09.12.2016, 12:47:14
Приветствую Вас Гость
Последние сообщения · Участники · Правила форума · Поиск · RSS
Страница 1 из 11
Форум » Компьютерный форум » Операционные системы » ОС для мобильных устройств » Секретные коды для android
Секретные коды для android
ingvarr
(65535) На сайте
Дата: 19.05.2016, 17:56:51 | Сообщение № 1
admin
Репутация: 729
Награды: 116
За 200 Сообщений За хорошую репутации
Большинство у кого есть устройство на базе ОС Android, хотя-бы краем уха слышали о «секретных кодах».

Наиболее распространённый — *#*#4636#*#* — это информация о телефоне, батарее, состоянии сети и т.д.

Часть первая. События в Android



Как известно, каждое приложение Android содержит в себе манифест. Это специально сформированный XML файл содержащий информацию какая целевая версия ОС, какие возможности разрешения требуются приложению для работы и т.д. Самое интересное в этом манифесте — секции описывающие BroadcastReceiver'ы. Это классы, которые реагируют на наступление определенных событий. Этих событий много, например: совершается исходящий звонок(android.intent.action.NEW_OUTGOING_CALL), изменилось состояние режима «полёт» (android.intent.action.ACTION_AIRPLANE_MODE_CHANGED)… Официальный список можно увидеть на сайте Android.
Однако список отнюдь не полон т.к. каждое приложение может создавать своё событие. Это вносит некоторый хаос в документацию при попытке выяснить на что может реагировать приложение.

Именно в этом хаосе удачно спряталось событие, которое представляет огромный интерес: android.provider.Telephony.SECRET_CODE

При вводе чего-либо начинающегося на *#*# и заканчивающегося #*#* в номеронабирателе происходит поиск и передача сообщения тому BroadcastRecever'у который слушает именно этот код(то что между *#*# и #*#*)

Часть вторая. Реагируем на код



Теперь глянем что-же требуется от приложения что-бы среагировать на наступление данного события:

Код
<receiver android:name=".receivers.DebugReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SECRET_CODE" />
<data android:scheme="android_secret_code" android:host="727" />
</intent-filter>


где:
Код
<receiver android:name=".receivers.DebugReceiver">
— начало секции BroadcastReceiver и указание какой именно Receiver должен быть вызван при наступлении данного события.
Код
<action android:name=«android.provider.Telephony.SECRET_CODE» />
— собственно событие на которое реагирует ресивер, набор кода.
Код
<data android:scheme=«android_secret_code» android:host=«727» />
— а вот и самое интересное место. Блок data отвечает за дополнительные параметра события и для события секретного кода — обязателен. Поле android:host здесь означает именно тот код, который пробудит нашу спящую красавицу от сна.
Т.е. что-бы запустить Receiver ".receivers.DebugReceiver", приложения из манифеста которого этот блок (о нем чуть позже), нужно в звонилке набрать *#*#727#*#*

Как видно, добавить скрытые возможности в свои приложения Android очень даже просто.
Что делать в Receiver'е я умолчу, там уже ваш собственный путь, лично я — вызываю отладочное Activity.
Ответить
Форум » Компьютерный форум » Операционные системы » ОС для мобильных устройств » Секретные коды для android
Страница 1 из 11
Поиск:



             Рейтинг@Mail.ru     HotLog