自动获取短信验证码填充

private SmsObserver smsObserver;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
smsObserver = new SmsObserver(this, smsHandler);
getContentResolver().registerContentObserver(SMS_INBOX, true, smsObserver);
}

public Handler smsHandler = new Handler() {
// 这里可以进行回调的操作
// TODO
public void handleMessage(android.os.Message msg) {

};
};

private Uri SMS_INBOX = Uri.parse("content://sms/");

public void getSmsFromPhone() {
ContentResolver cr = getContentResolver();
String[] projection = new String[] { "body", "address", "person" };// "_id",// "address",// "person",, "date",// "type
String where = " date >  " + (System.currentTimeMillis() - 10 * 60 * 1000);
Cursor cur = cr.query(SMS_INBOX, projection, where, null, "date desc");
if (null == cur)
return;
if (cur.moveToNext()) {
// String number = cur.getString(cur.getColumnIndex("address"));//
// 手机号
// String name = cur.getString(cur.getColumnIndex("person"));//
// 联系人姓名列表
String body = cur.getString(cur.getColumnIndex("body"));
// 这里我是要获取自己短信服务号码中的验证码~~
Pattern pattern = Pattern.compile("[a-zA-Z0-9]{6}");//6代表想要截取其中的几位字符串
Matcher matcher = pattern.matcher(body);// String  body="测试验证码2346ds";
if (matcher.find()) {
String res = matcher.group().substring(0, 6);// 获取短信的内容
}
}
}

class SmsObserver extends ContentObserver {
public SmsObserver(Context context, Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
// 获取短消息的方法
getSmsFromPhone();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值