Есть приложение, которое должно перехватывать смс и проверять, если смс пришло с одного из сервисных номеров, то тогда обрабатывать это смс нашим приложением (смс не должно попадать в список входящих сообщений на устройстве и не должно всплывать уведомление о новом смс; наше приложение должно извлечь данные из смс и обработать их - с этим проблем нету), если не от сервисного номера - то отправлять на обработку стандартному приложению для смс на устройстве (Messsages, Hangouts и т.д.).
Для реализации этой задачи нужно, чтобы наше приложение первым перехватывало входящее смс, а для этого судя по всему оно должно стоять как приложение по умолчанию для смс (если ошибаюсь - поправьте).
Но, если наше приложение будет стоять по умолчанию для смс, то допустим если наш Receiver
перехватил входящее сообщение, но определил, что оно пришло не от сервисного номера, то это сообщение будет обработано в стандартном приложении для работы с смс (Messsages, Hangouts и т.д.) со стандартным поведением (всплывающее уведомления о новом смс и т.д.)?
Итог: нужно, чтобы наше приложение умело перехватывать и обрабатывать входящие сообщения только с определённых номеров телефонов, а со всех остальных номеров, чтобы смс обрабатывались приложениями, которые предназначены именно для этих задач (Messsages, Hangouts и т.д.).
Данный функционал должен работать с версии android 2.3 заканчивая последней.
Для реализации этой задачи нужно, чтобы наше приложение первым перехватывало входящее смс, а для этого судя по всему оно должно стоять как приложение по умолчанию для смс (если ошибаюсь - поправьте).
Ошибаетесь, только дефолтное приложение имеет доступ к БД смс на запись, а перехватить может любое - это не проблема.
Посмотрите на исходники кастомного ресивера
В ресивере надо распознать номер и если номер ваш - то просто вызвать abortBroadcast()
, а если номер не ваш то пропустить его дальше по цепочке ресиверов, так что он доберется до стокового обработчика, который запишет его в БД и все такое.
Манифест примерно такой:
<!-- SMS receiver -->
<receiver
android:name=".SmsReceiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BROADCAST_SMS" >
<intent-filter android:priority="2147483647" > <!-- 999 is highest system priority, so it's hack 2147483647 -->
<action android:name="android.provider.Telephony.SMS_RECEIVED" /> <!-- pre kitkat action -->
<action android:name="android.provider.Telephony.SMS_DELIVER" /> <!-- kitkat action -->
</intent-filter>
</receiver>
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Помогите hibernate не создает таблицыВозможно нарушен мапинг!
Не получается добавить запись в таблицуЕще не работает удаление