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

原创 2017年07月24日 10:44:16

一、简介

Android的短信验证码自动输入库,内嵌自动申请权限,兼容性高,支持多项配置。

  • 短信验证码长度
  • 验证码类型(大写字母、小写字母、大小写字母、数字、数字字母)
  • 短信内容过滤
  • 发送者号码过滤
  • 短信权限回调,失败重新操作等等
  • 消息回调,可自行处理

Github地址: https://github.com/tpnet/AutoVerifyCode

图例

二、使用

2.1 最简单的使用

适用在验证码为数字,而且验证码为4-6位。

AutoVerifyCode.getInstance()
                .with(MainActivity.this)
                .into(R.id.et_code)  //要输入的编辑框
                .start();       //开始

2.2 多种属性配置

/**
     * 多种属性设置
     * @param v
     */
    public void complex(View v){
        AutoVerifyCodeConfig config = new AutoVerifyCodeConfig.Builder()
                .codeLength(6) // 验证码长度
                .smsCodeType(AutoVerifyCodeConfig.CODE_TYPE_NUMBER)  //验证码类型
                .smsSenderStart("650") // 验证码发送者号码的前几位数字
                .smsSender("6505551212") // 验证码发送者的号码
                .smsBodyStartWith("【守护APP】") // 设置验证码短信开头文字,固定可以设置
                .smsBodyContains("重置") // 设置验证码短信内容包含文字,每个功能包含不一样,例如注册、重置密码
                .build();

        AutoVerifyCode.getInstance()
                .with(MainActivity.this)
                .config(config)  //验证码选项配置
                .smsCallback(new MessageCallBack())  //短信内容回调
                .permissionCallback(new PerCallBack())  //短信短信回调
                .inputCompleteCallback(new OnInputCompleteListener() {
                    @Override
                    public void onInputComplete(String text) {
                        //自动输入完毕,可以进行登录等等操作
                        Log.e("@@","自动输入验证码完成"+text);

                    }
                })
                .into((EditText) findViewById(R.id.et_code))  //要输入的View
                .start();       //开始
    }




    /**
     * 获取短信回调接口
     * 
     */
    class MessageCallBack extends SmsCallBack{
        @Override
        public void onGetCode(String code) {
            Log.e("@@","验证码为:"+code);
        }

        @Override
        public void onGetMessage(String mess) {
            Log.e("@@","短信内容为:"+mess);

        }

        @Override
        public void onGetSender(@Nullable String phoneNumber) {
            Log.e("@@","发送者为:"+phoneNumber);

        }
    }



    class PerCallBack implements PermissionCallBack{

        @Override
        public void onSuccess() {
            //获取短信权限成功
            Log.e("@@","获取短信权限成功:");
        }

        @Override
        public boolean onFail() {
            //获取短信权限失败
            Toast.makeText(MainActivity.this,"拒绝获取短信权限",Toast.LENGTH_SHORT).show();
            Log.e("@@","获取短信权限失败,返回真则重试获取权限,或者你自己手动获取了之后再返回真也行");

            return false;
        }
    }

2.3 释放

因为一般只用一次,所以在页面销毁的地方释放内存。

@Override
    protected void onDestroy() {
        super.onDestroy();
        //因为一般只用一次,所以页面销毁就释放。
        AutoVerifyCode.getInstance().release();
    }

三、原理

主要利用两种方法获取短信

  • 短信数据库监听: 见SmsObserver
  • 短信广播监听: 见SmsReceiver

然后利用Service实现这两种方法。注释都在代码上面了,挺简单的。 就不详细讲了。

版权声明:本文为博主原创文章,转载请带上出处,谢谢。

Android自定义验证码组件

1.声明验证码所需要的属性: //验证码文字大小 //验证码文本颜色 ...

Android开发中验证码的生成

最近在做电商金融类的项目,验证码的生成方法必不可少,先学习了一种,经过测试好用,从别处学习的代码,稍改动了一下可选择是否支持识别大小写。直接上代码。...

Android自定义View实现文字验证码

最近在深圳出差忙的不卡开交但又感觉没什么提升,很着急…五一终于能静下心写点博客了,最近想写一系列自定义View的博客,自己也是一边学习一边记录,言归正传,要实现上面的效果很简单1,获取4个随机数2,将...

Android移动开发者必须知道的Deep Linking技术

1.概述 Deep Linking(译:深度链接)作为移动开发者可能对这个概念有点陌生,但是对于它的实现原理,说出来大家肯定都知道。不过我们先说一下Deep Linking能做什么? ...

mac画图工具 OmniGraffle (二)对象的控制

非常不错的mac绘图教程,尊重原作者 原文地址:http://www.jianshu.com/p/bef7f6272c10 OmniGraffle (二)对象的控制 OmniGraffle 里...

用Verilog实现一个桶形移位器

实验六 桶型移位器实验介绍本实验使用Verilog语言设计实现一个32位桶型移位器。实验目标 1. 使用ISE软件设计并进行仿真 2. 学会使用Modelsim 3. 理解桶型移位器原理,使用l...

android 截取短信验证码自动输入Demo

  • 2015年08月16日 08:54
  • 3.47MB
  • 下载

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

现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: ...
  • zzh1026
  • zzh1026
  • 2016年05月13日 15:49
  • 1547

Android短信验证码自动填写

  • 2015年09月26日 15:25
  • 1.46MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 自动获取输入短信验证码库AutoVerifyCode
举报原因:
原因补充:

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