安卓通过广播自动回填短信验证码

每次我们注册一个什么软件的账号时一般都是需要输入

验证码的,然后验证码需要通过短信的接收才可以看得到

那么问题来了。短信接收到,我们可以直接将验证码填入

需要填入的输入框里面去。

接下来贴代码时刻

声明部分

private BroadcastReceiver smsReceiver;// 定义一个广播接收器
private IntentFilter filter2;//
private EditText editCaptcha;// 短信自动填入框
private String strContent; // 验证码内容
private String patternCoder = "(?<!\\d)\\d{4,10}(?!\\d)";// 验证短信内容

代码实现部分

private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
editCaptcha.setText(strContent);
};
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editCaptcha = (EditText) findViewById(R.id.login_editcaptcha);

filter2 = new IntentFilter();// 创建意图过滤器
filter2.addAction("android.provider.Telephony.SMS_RECEIVED");// 创建意图动作
filter2.setPriority(Integer.MAX_VALUE);// 设置等级最大
smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Object[] objs = (Object[]) intent.getExtras().get("pdus");// 获取收到的消息
for (Object obj : objs) {
byte[] pdu = (byte[]) obj;
SmsMessage sms = SmsMessage.createFromPdu(pdu);
// 短信的内容
String message = sms.getMessageBody();// 获取手机短信的内容
Log.d("logo", "message " + message);
// 短息的手机号。。+86开头?
String from = sms.getOriginatingAddress();// 获取手机号码
Toast.makeText(getApplicationContext(), "from: " + from,
Toast.LENGTH_LONG).show();
Log.d("logo", "from " + from);
if (!TextUtils.isEmpty(from)) {// 判断号码是否为空
String code = patternCode(message);
if (!TextUtils.isEmpty(code)) {
strContent = code;
handler.sendEmptyMessage(1);
}
}
}
}
};
registerReceiver(smsReceiver, filter2);// 注册广播监听器

}

@Override
protected void onDestroy() {
super.onDestroy();
// 解除自动输入的广播
unregisterReceiver(smsReceiver);
}

/**
* 匹配短信中间的6个数字(验证码等)
*
* @param patternContent
* @return
*/
private String patternCode(String patternContent) {
if (TextUtils.isEmpty(patternContent)) {
return null;
}
Pattern p = Pattern.compile(patternCoder);
Matcher matcher = p.matcher(patternContent);
if (matcher.find()) {
return matcher.group();
}
return null;
}

另外重要的是我们要给我们的程序清单文件给个权限

那么我们的软件就可以自动回填数据了!!!

时间: 2024-11-04 01:01:40

安卓通过广播自动回填短信验证码的相关文章

自动填充短信验证码(使用ContentObserver)

为了减少用户的操作步骤,在获得短信验证码的时候,我们可以监听特殊手机号码的短信,截取信息当中的短信验证码(其实有很多应用都监听短信例如360短信,一些信用卡或者是记账类的应用). 原理:可以使用一个自定义的BroadcastReceiver来监听短信,在监听结果当中过滤手机号,在需要回填的activity当中实现实例化广播并且实现其回调接口,在接口当中进行回填验证码,在销毁activity时销毁链接.但是这样操作会出现一些问题,由于一些其他的应用也会使用广播监听手机例如QQ通讯录或者是360通讯

Android自动读取短信验证码

Android自动读取短信验证码 extends:http://www.cnblogs.com/jiayaguang/p/4366384.html 实现自动获取手机的短信验证码,原理通过监听短信数据库的变化来解析短信,获取验证码. 直接附上代码: 1.建立一个监听数据库的类 import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.data

自动获取短信验证码并填充以及倒计时_Android源码

自动获取短信验证码并填充以及倒计时 自动获取短信验证码并填充以及倒计时 下载地址:http://www.devstore.cn/code/info/827.html 运行截图:

Android自动获取短信验证码

前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便 public class SMSReceiver extends BroadcastReceiver{    private String verifyCode="&quo

Android自动填充短信验证码

自动拦截短信实际上就是在系统注册一个BroadcastReceiver,然后通过设置拦截短信的: filter.addAction("android.provider.Telephony.SMS_RECEIVED"); filter.setPriority(Integer.MAX_VALUE); 即可拦截你所需要的短信了,拦截短信可能需要设置下最新的时间,这个问题我也考虑到了,下一步是重写onrecever方法: smsReceiver = new BroadcastReceiver(

自动获取短信验证码

1.自定义监听类 /** * 短信监听器,用于自动填充验证码 */ public class SMSContentObserver extends ContentObserver { public final String SMS_URI_INBOX = "content://sms/inbox";//收信箱 private Activity activity = null; private String smsContent = "";//验证码 private 

android自动填写短信验证码

广播类 package com.examp.azuoyoutong.listner; import java.util.regex.Matcher;import java.util.regex.Pattern; import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.SmsMessage;import

Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)

一般用户喜欢用手机号作为用户名注册APP账号,这时一般都是通过手机验证码的方式进行验证,下面我们就研究一个非常实用的方法,通过监听短信-实现短信验证码的自动填入,提高用户体验. 首先我们看一下如何监听手机短信. 一.获取短信全部内容 1.新建一个SMSBroadcastReceiver: package com.example.messagecut; import java.text.SimpleDateFormat; import java.util.Date; import android.

android获取短信验证码并自动填写的实现一

android获取短信验证码并自动填写的实现一 android获取短信验证码并自动填写的实现一,有需要的朋友可以参考下. 现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> &l