Как отличить доставку SMS от программного доступа к OTP в Android 17, проверить ручной ввод и собрать минимальный пакет для разработчика без разглашения кода.
Разделите четыре границы OTP
Первая граница — SMS доставлено оператором. Вторая — пользователь видит его в штатном SMS-приложении. Третья — другое приложение получает код программно. Четвёртая — его сервер принимает код. Отметьте для одного запроса каждую границу отдельно. Если сообщение видно, но поле осталось пустым, доставка не является главной гипотезой. Если ручной ввод принят, серверная проверка тоже отделена от автоподстановки.
Примените точную границу Android 17
Для большинства приложений, целящихся в Android 17, API 37 или выше, стандартные SMS с OTP не становятся доступны программно до истечения трёх часов. В этот период система удерживает SMS_RECEIVED_ACTION и фильтрует запросы к SMS provider для этих приложений. Эта граница не относится одинаково ко всем приложениям: официальная документация называет исключения, в том числе для default SMS и некоторых companion-приложений. Поэтому не переносите наблюдение из одного приложения на все.
Проверьте ручной ввод без риска
Запросите один новый код и сразу запишите время с часовым поясом, версию Android и версию приложения. Если SMS пришло, не пересылайте его и не делайте скриншот с кодом. Введите код вручную в то же поле и запишите только «принят», «отклонён» или «поле не позволяет вставку». Успешный ручной ввод локализует боль в автоматизации. Неуспешный ручной ввод означает, что трёхчасовая защита не объясняет весь сбой, и нужно проверять время жизни кода и сервер.
Эскалируйте без передачи кода
Android Developers рекомендует разработчикам, которым нужна автоматическая верификация, переходить на SMS Retriever или SMS User Consent API. SMS Retriever работает с сообщением, содержащим уникальную строку приложения, и требует координации клиента и сервера. Пользователю не нужно исправлять это разрешением чтения всех SMS. Для тикета достаточно времени запроса и получения, версий ОС и приложения, результата ручного ввода и признака автоподстановки. Сам код, номер и текст SMS не передавайте. Если проблема возникает и на более старой версии Android, не приписывайте её новой защите. Если она появилась после обновления самого приложения при неизменной ОС, это полезно для вопроса о target SDK и методе автоподстановки. Два этих сравнения позволяют поддержке проверить гипотезу без кода и логов.
Материал подготовлен редакцией VOne с применением ИИ для структуры; трёхчасовая задержка, исключения и рекомендованные API вручную сверены с Android Developers.
Источники и проверка
- Android Developers — behavior changes for OTP проверено 2026-08-04
- Android Developers — SMS Retriever проверено 2026-08-04
- Android Developers — Android 17 summary проверено 2026-08-04
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.