android - 从短信中自动读取 OTP

标签 android kotlin sms one-time-password

我正在尝试使用 this 阅读短信方法。但是我的应用程序没有读取消息。

我已经尝试过的代码。

权限:

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

Activity (主要代码):

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()
    }
}

最佳答案

因为这个 Reminder SMS/Call Log Policy Changes 这不是一个好主意.

推荐的方法是使用 Google Play 服务中的 SMS Retriever API。查看Automatic SMS Verification with the SMS Retriever API .

请注意,您的服务器需要按照一些规则发送消息(消息以“<#>”开头,包括 OTP 和其他信息,并以标识您的应用程序的哈希结尾)。

关于android - 从短信中自动读取 OTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56004721/

相关文章:

android - 无法从 onBackgroundMessage 启动 Activity

java - 发送短信时Android所有变量都会重置

php - 不将我在 android 中的编辑文本值传递给 PHP 变量

java - Kotlin 和数据绑定(bind) Int 值 null 检查问题

Kotlin:具有多个不同类型 setter 的单个属性

ios - 我想用短信给电话发短信,但让它在短信完成后把人送回去,比如 "telprompt"但对于短信

cocoa - 从 Cocoa 应用程序发送短信

java - HttpURLConnection返回的InputStream中的数据在读取之前存储在哪里?

java - 在 Android 中动态地从字符串中获取值

android - NDK - 包括错误