前言
此技术的实现原理是“广播接收者”和“内容观察者”。
利用接收到短信时的系统发出的广播进行短信的读取,并利用正则表达式解析出短信中的验证码。
在部分手机上,该广播被禁用,所以需要使用到内容观察者,在短信收件箱发生变化时,对短信数据库进行读取,得到相应验证码短信,并利用正则表达式解析出短信中的验证码。本文内容请使用于正规用途,请勿用于非法监听用户短信等恶意行为。谢谢合作!
本文原创作者xiong_it,本文原创链接:http://blog.csdn.net/Xiong_IT/article/details/50997084
本篇文章已授权微信公众号 guolin_blog(郭霖)独家发布.
使用广播接收者获取验证码
广播接收者一般用法
- 继承BroadcastReceiver
- 重写onReceive(Context context, Intent intent);
- 注册自定义广播接收者(1.代码动态注册;2.清单文件注册)
使用广播接收者获取验证码实现代码如下:
public class ReadSmsCodeReceiver extends BroadcastReceiver {
private static final String SMS_RECEIVED_ACTION =Telephony.Sms.Intents.SMS_RECEIVED_ACTION;// 接收到短信时的action
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
getSmsCodeFromReceiver(intent);
}
}
/**
* 从接收者中得到短信验证码
*
* @param intent
*/
private void getSmsCodeFromReceiver(Intent intent) {
KJLoger.log(TAG, "getSmsCodeFromReceiver");
SmsMessage[] messages = null;
if (Build.VERSION.SDK_INT >= 19) {
messages = android.provider.Telephony.Sms.Intents.getMessagesFromIntent(intent);
if (messages ==