Я пытаюсь создать приложение для мониторинга входящих SMS-сообщений и запустить программу с помощью входящих SMS-сообщений, также она должна читать содержимое SMS-сообщений.
Процедура:
- SMS отправлено на устройство Android
- самоисполняемое приложение
- Прочитайте информацию SMS
android
sms
android-service
iShader
источник
источник
Ответы:
Примечание. В файле манифеста добавьте BroadcastReceiver-
Добавьте это разрешение:
источник
SMS_RECEIVED
трансляцию в 4.4+, и теперь, когда эта трансляция не может быть прервана, это более точно, чем в предыдущих версиях.Обратите внимание, что на некоторых устройствах ваш код не будет работать без android: priority = "1000" в фильтре намерений:
И вот некоторые оптимизации:
Примечание :
Значение должно быть целым числом, например, «100». Более высокие числа имеют более высокий приоритет. Значение по умолчанию - 0. Значение должно быть больше -1000 и меньше 1000.
Вот ссылка.
источник
android:priority
не может быть выше1000
(или меньше-1000
).@ Майк М. и я нашли проблему с принятым ответом (см. Наши комментарии):
По сути, нет смысла проходить цикл for, если мы не объединяем составное сообщение каждый раз:
Обратите внимание, что мы просто устанавливаем
msgBody
строковое значение соответствующей части сообщения, независимо от того, по какому индексу мы находимся, что делает бесполезным весь цикл прохождения по различным частям SMS-сообщения, поскольку оно будет просто установлено на последнее значение индекса Вместо этого мы должны использовать+=
, или как указано МайкStringBuilder
:В общем, вот как выглядит мой код получения SMS:
Просто поместите этот ответ на тот случай, если у кого-то возникнет такая же путаница.
источник
Это то, что я использовал!
источник
В случае, если вы хотите обработать намерение в открытой деятельности, вы можете использовать PendintIntent (выполните шаги ниже):
манифест:
onNewIntent:
разрешения:
источник
Если кто-то ссылается на то, как сделать ту же функцию (чтение OTP с помощью полученных SMS) на Xamarin Android, как я:
Добавьте этот код в свой файл AndroidManifest.xml:
Затем создайте свой класс BroadcastReveiver в своем проекте Android.
Зарегистрируйте этот класс BroadcastReceiver в своем классе MainActivity на Android Project:
источник
Спасибо @Vineet Shukla (принятый ответ) и @Ruchir Baronia (нашел проблему в принятом ответе), ниже приведен
Kotlin
версия:Добавить разрешение:
Зарегистрируйте BroadcastReceiver в AndroidManifest:
Добавьте реализацию для BroadcastReceiver:
Иногда событие запускается дважды, поэтому я добавляю
mLastTimeReceived = System.currentTimeMillis()
источник
Реализация трансляции на Котлин:
Примечание. В файле манифеста добавьте BroadcastReceiver-
Добавьте это разрешение:
источник
Принятый ответ правильный и работает на более старых версиях Android, где ОС Android запрашивает разрешения при установке приложения, однако в более новых версиях Android это не работает сразу, потому что более новая ОС Android запрашивает разрешения во время выполнения, когда приложение требует эту функцию , Поэтому, чтобы получать SMS на более новых версиях Android, используя технику, упомянутую в принятом ответе, программист должен также реализовать код, который будет проверять и запрашивать разрешения у пользователя во время выполнения. В этом случае функциональность / код проверки прав могут быть реализованы в onCreate () первой активности приложения. Просто скопируйте и вставьте следующие два метода в ваше первое действие и вызовите метод checkForSmsReceivePermissions () в конце onCreate ().
источник