Android自动获得短信验证码

原创 2015年11月20日 22:21:50

Android自动获得短信验证码

1:<!--动态读取手机短信权限-->
<uses-permission android:name="android.permission.READ_SMS" />

2:编写内容观察者类,监听短信触发:
public class SmsObserver extends ContentObserver {
    private Context mContext;
    private Handler mHandler;
    public SmsObserver(Context context, Handler handler) {
        super(handler);
        mContext = context;
        mHandler = handler;
    }
    @Override
    public void onChange(boolean selfChange, Uri uri) {
        super.onChange(selfChange, uri);

        Log.e("DEBUG", "SMS has changed!");
        Log.e("DEBUG", uri.toString());
        String code = "";
        if (uri.toString().equals("content://sms/raw")) {
            return;
        }
        Uri inboxUri = Uri.parse("content://sms/inbox");
        Cursor c = mContext.getContentResolver().query(inboxUri, null, null, null, "date desc");
        if (c != null) {
            if (c.moveToFirst()) {
                String address = c.getString(c.getColumnIndex("address"));//获得发件人
                String body = c.getString(c.getColumnIndex("body"));//发件内容
                //即发送短信的号码
               if (!address.equals("10690067200453")) {
                    return;
                }
                Log.e("DEBUG", "发件人为:" + address + " " + "短信内容为:" + body);

                Pattern pattern = Pattern.compile("(\\d{6})");//通过正则表达式获得六位数验证码
                Matcher matcher = pattern.matcher(body);
                if (matcher.find()) {
                    code = matcher.group(0);
                    Log.e("DEBUG", "code is " + code);
                    //发送通过Register.MSG_RECEIVED_CODE发送code到实现类
                    mHandler.obtainMessage(Register.MSG_RECEIVED_CODE, code).sendToTarget();
                }
            }
            c.close();
        }
    }
}

3:实现类:
public class Register extends Activity {

    private EditText codeText;//验证码框
    public static final int MSG_RECEIVED_CODE = 1;

    private SmsObserver mObserver;
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == MSG_RECEIVED_CODE) {
                String code = (String)msg.obj;
                codeText.setText(code);
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        //动态获取短信验证码
        mObserver = new SmsObserver(Register.this, mHandler);
        Uri uri = Uri.parse("content://sms");
        getContentResolver().registerContentObserver(uri, true, mObserver);//注册短信内容观察者
}
@Override
protected void onPause() {
    super.onPause();
    getContentResolver().unregisterContentObserver(mObserver);//取消内容观察者注册
}

4:图片:
![短信验证码](http://img.blog.csdn.net/20151120222027525)


版权声明:本文为博主原创文章,未经博主允许不得转载。

android获取短信验证码并自动填写

参考资料如下,亲测很好用,哈哈: http://blog.csdn.net/kaloda2011/article/details/21032829代码如下: MainActivitypublic ...
  • jane1229
  • jane1229
  • 2016年09月12日 17:11
  • 3353

android 短信验证码自动填写的两种方式

实际应用开发中,会经常用到短信验证的功能,这个时候如果再让用户就查看短信.然后再回到界面进行短信的填写,难免有多少有些不方便,作为开发者.本着用户至上的原则我们也应该来实现验证码的自动填写功能,实现短...
  • u010399316
  • u010399316
  • 2015年09月28日 10:23
  • 2372

Android 短信验证码自动填写

这个也不是什么新东西,目前很多app都有这个功能,最近有几个小伙伴问我是怎么实现的,索性写一篇博客来为大家解答。        实现思路很简单:1、在需要输入验证码的Activity代码注册监听短信...
  • soul_code
  • soul_code
  • 2015年12月17日 09:09
  • 3477

android--监听短信实现短信验证码自动填充

android中短信验证码的自动填充
  • biaobiao1217
  • biaobiao1217
  • 2016年07月08日 14:51
  • 1197

Android 自动获取输入短信验证码库AutoVerifyCode

一、简介Android的短信验证码自动输入库,内嵌自动申请权限,兼容性高,支持多项配置。 短信验证码长度 验证码类型(大写字母、小写字母、大小写字母、数字、数字字母) 短信内容过滤 发送者号码过滤 短...
  • niubitianping
  • niubitianping
  • 2017年07月24日 10:44
  • 969

Android短信验证码自动填写功能的实现

android应用经常会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,通常,用户收到短信需要最小化应用去查看短信再填入验证码,必然比较麻烦,因此有必要能够自动获得下发的短信...
  • u014343528
  • u014343528
  • 2016年03月15日 20:08
  • 2985

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

android获取短信验证码并自动填写的实现一,有需要的朋友可以参考下。 现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首...
  • lyglostangel
  • lyglostangel
  • 2015年09月30日 09:49
  • 1329

安卓ContentObserver模式获取短信用正则自动填充验证码

安卓开发采用观察者模式ContentObserver监听短信用正则获取短信验证码
  • yung7086
  • yung7086
  • 2014年05月17日 21:26
  • 13647

Android获取短信验证码并自动填充的两种方式

有些项目为了方便客户操作,减去客户输入短信验证码的时间,会要求安卓app能够获取收到的短信验证码并自动填充到输入框。所以,我整理了安卓获取短信验证码并自动填充输入框的两种方法,而且正式在项目中使用并无...
  • dwj611
  • dwj611
  • 2017年04月13日 13:42
  • 1685

Android短信验证码自动填写的实现

今天给大家分享一个短信验证码自动填写的功能。先看下效果图,我发送了一条短信到手机,自动填写验证码。如图: 这个小功能运用到了观察者模式,什么是观察者模式? 观察者模式 :定义对象间的一种一个(...
  • wyj2424
  • wyj2424
  • 2015年09月26日 15:30
  • 559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android自动获得短信验证码
举报原因:
原因补充:

(最多只允许输入30个字)