Автоматическое чтение OTP из SMS

Я пытаюсь прочитать SMS, используя этот метод. Но мое приложение не читает Message.

Код, который я пробовал еще.

Разрешение :

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />

Деятельность (основной код):

class OtpActivity : AppCompatActivity(), View.OnClickListener {
    private var smsVerifyCatcher: SmsVerifyCatcher? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_otp)
        smsVerifyCatcher = SmsVerifyCatcher(this, OnSmsCatchListener { message ->
            val code = parseCode(message)//Parse verification code
            Log.e("Code", code)
            //then you can send verification code to server
        })
        smsVerifyCatcher!!.setPhoneNumberFilter("0902249") // I passed 10 digit number here
        smsVerifyCatcher!!.setFilter("Ashish") // For extra i added Filter for name
    }
    private fun parseCode(message: String): String {
        val p = Pattern.compile("\\b\\d{4}\\b")
        val m = p.matcher(message)
        var code = ""
        while (m.find()) {
            code = m.group(0)
        }
        return code
    }
    override fun onStart() {
        super.onStart()
        smsVerifyCatcher!!.onStart()
    }

    override fun onStop() {
        super.onStop()
        smsVerifyCatcher!!.onStop()
    }
}

person Ashish    schedule 06.05.2019    source источник
comment
Используйте API для извлечения смс, если вы хотите опубликовать приложение в игровом магазине.   -  person Manohar    schedule 06.05.2019
comment
Если кто-то даст мне прочитать код смс. Я могу использовать rxjava для извлечения otp.   -  person Ashish    schedule 06.05.2019
comment
попробуйте это stackoverflow.com/a/38604568/5901903   -  person MadLeo    schedule 06.05.2019


Ответы (1)


Это не очень хорошая идея из-за этого SMS-напоминания/ Изменения политики журнала вызовов.

Рекомендуемый способ — использовать SMS Retriever API из сервисов Google Play. См. раздел Автоматическая проверка по SMS с помощью SMS Retriever API.

Обратите внимание, что ваш сервер должен отправлять сообщения в соответствии с несколькими правилами (сообщение начинается с «‹#>», включает OTP и дополнительную информацию и заканчивается хешем, идентифицирующим ваше приложение).

person Xavier Rubio Jansana    schedule 06.05.2019
comment
Я собираюсь использовать свой частный API для отправки сообщения, и я просто хочу получить текст из смс. - person Ashish; 06.05.2019
comment
SMS Retriever API не требует использования серверов Google для отправки SMS. Вы по-прежнему можете использовать свою (или любую стороннюю службу, которой вы пользуетесь). Вам просто нужно отформатировать SMS, следуя нескольким правилам, и SMS Retriever API доставит сообщение до вашего приложения без необходимости получать разрешения SMS (которые теперь не разрешены, за исключением очень конкретных случаев (как вы можете прочитать в первой ссылке) моего ответа). - person Xavier Rubio Jansana; 06.05.2019