从短信中自动读取 OTP
Auto Read OTP from SMS
我正在尝试使用 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 Services 的 SMS Retriever API。见 Automatic SMS Verification with the SMS Retriever API.
请注意,您的服务器需要按照一些规则发送消息(消息以“<#>”开头,包括 OTP 和其他信息,并以标识您的应用程序的哈希结尾)。
我正在尝试使用 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 Services 的 SMS Retriever API。见 Automatic SMS Verification with the SMS Retriever API.
请注意,您的服务器需要按照一些规则发送消息(消息以“<#>”开头,包括 OTP 和其他信息,并以标识您的应用程序的哈希结尾)。