代码地址如下:
http://www.demodashi.com/demo/12541.html

前言

获取短信验证码的的第三方很多,今天介绍一个获取短信验证码的demo,它有以下优势

  1. 短信到达率几乎100%
  2. 代码经过我封装,集成简单
  3. 获取短信验证码免费

下面对此demo的讲解涉及以下内容:

  1. 短信平台使用简介
  2. 短信验证集成配置
  3. 短信验证代码封装
  4. 倒计时类简单讲解
  5. 短信验证在代码中的使用
  6. 项目结构与效果图

实现过程

一.短信平台使用简介

短信平台地址及此平台发送短信验证的特点在demo中的

MobSDKHelper类的最上面有详细解释,这里就不再赘述了。

二.短信验证集成配置
2.1 在你的project的build.gradle中添加配置
buildscript {
repositories {
google()
jcenter() //添加MobSDK的maven地址
maven {
url "http://mvn.mob.com/android"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0' // 注册MobSDK
classpath 'com.mob.sdk:MobSDK:+'
}
}
2.2 在你的app moduel的build.gradle中添加配置
// 添加插件
apply plugin: 'com.mob.sdk' // 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
appKey "244e915baae1a"
appSecret "b5eb7df4657dbde9b36b673cef463a3e" SMSSDK {
// gui false
}
}

短信验证的获取有两种方式,分为有界面集成和无界面集成,上面代码中的“gui false”即为禁用有界面集成的代码,也就是设置为false后,只能使用无界面集成方法进行获取验证码

三.短信验证代码封装

短信验证码的获取及验证,我封装到了MobSDKHelper类中,下面对MobSDKHelper中涉及要用到的方法做以解释

请求获取短信验证码,你可以这样,其中phone为你的设置的手机号码,如"18507123357":

 MobSDKHelper.getInstance().sendCode("86", phone, new MobSDKHelper.SendListener() {
@Override
public void success(String phone) {
//请求验证码成功的处理逻辑
//......
} @Override
public void failed() {
//请求验证码失败的处理逻辑
//......
}
});

手机收到验证码并填入editText中,点击注册来验证验证码是否正确,你可以这样,其中phone为电话号码,code为收到的验证码:

  MobSDKHelper.getInstance().submitCode("86", phone, code,new MobSDKHelper.SubmitListener() {
@Override
public void success(String phone) {
//验证成功,做注册逻辑
//......
} @Override
public void failed() {
//验证失败,做失败处理逻辑
//...... }
});

注销短信验证服务,一般在activity的onDestroy()方法中进行,注销你可以类似这样处理:

    @Override
protected void onDestroy(){
MobSDKHelper.getInstance().unRegistSMSS(); super.onDestroy();
}
四.倒计时类简单讲解

短信验证涉及到倒计时的问题,我封装了一个倒计时类CountDownTimerHelper,下面对其使用做讲解

CountDownTimerHelper继承于CountDownTimer类,初始化的话,你可以这样:

//初始化
mCountDownTimerHelper=new CountDownTimerHelper(context,button,millisInFuture,countDownInterval);
//解释:context为上下文
//button 为点击获取验证码的Button对象
//millisInFuture 为总共需要倒计时的时间,单位为毫秒
//countDownInterval 为倒计时时间间隔,单位毫秒

开启倒计时,你可以如下处理:

mCountDownTimerHelper.startTimer();

取消倒计时,一般在activity的onDestroy()方法中进行,你可以类似如下处理

 @Override
protected void onDestroy(){ if(mCountDownTimerHelper!=null){
mCountDownTimerHelper.cancelTimer();
}
super.onDestroy();
}
五.短信验证在代码中的使用

下面简单贴出在MainActivity中代码的使用范例:

public class MainActivity extends BaseActivity{

    private EditText mEdtPhone;
private EditText mEdtCode;
private Button mBtnGet;
private Button mBtnConfirm; private CountDownTimerHelper mCountDownTimerHelper; @Override
protected int getContentViewId() {
return R.layout.activity_main;
} @Override
protected void initView() {
mEdtPhone=findViewById(R.id.edt_phone);
mEdtCode=findViewById(R.id.edt_code);
mBtnGet=findViewById(R.id.btn_get);
mBtnConfirm=findViewById(R.id.btn_confirm); } @Override
protected void initData() {
mCountDownTimerHelper=new CountDownTimerHelper(MainActivity.this,mBtnGet,60000,1000);
} @Override
protected void setListener() {
mBtnGet.setOnClickListener(this);
mBtnConfirm.setOnClickListener(this);
} @Override
public void onClick(View v) {
String phone=mEdtPhone.getText().toString().trim();
String code=mEdtCode.getText().toString().trim(); switch (v.getId()) {
case R.id.btn_get://发送
mCountDownTimerHelper.startTimer(); MobSDKHelper.getInstance().sendCode("86", phone, new MobSDKHelper.SendListener() {
@Override
public void success(String phone) {
//请求验证码成功的处理逻辑
//......
LogUtil.e(MainActivity.class,"===phone="+phone);
} @Override
public void failed() {
//请求验证码失败的处理逻辑
//......
LogUtil.e(MainActivity.class,"===发送失败了=====");
}
}); break;
case R.id.btn_confirm://提交
MobSDKHelper.getInstance().submitCode("86", phone, code,new MobSDKHelper.SubmitListener() {
@Override
public void success(String phone) {
ToastUtil.showShortToast(MainActivity.this,"====验证成功===");
LogUtil.e(MainActivity.class,"===验证成功===="); //验证成功,做注册逻辑
//......
} @Override
public void failed() {
ToastUtil.showShortToast(MainActivity.this,"====验证失败===");
LogUtil.e(MainActivity.class,"===验证失败====="); }
});
break;
default:
break;
}
} @Override
protected void onDestroy(){
MobSDKHelper.getInstance().unRegistSMSS();
if(mCountDownTimerHelper!=null){
mCountDownTimerHelper.cancelTimer();
}
super.onDestroy();
}
六.项目结构与运行效果图

项目结构图

运行效果图

android实现免费短信验证

代码地址如下:
http://www.demodashi.com/demo/12541.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

android实现免费短信验证的更多相关文章

  1. Android从零单排之免费短信验证

    介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息验证支付等.短信验证利用短信验证码来注册会员,大大降低了非法注册,很大程度上提高了用户账户的安全性. 目前市面上已经有了很多提供 ...

  2. Android免费短信验证

    转载请注明住处:http://blog.csdn.net/crazy1235/article/details/41912003 介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息 ...

  3. android下身份验证方式调用webservice

    在企业开发领域,webservice还是经常被用到的服务体系,因为他对安全事务支持都比较好. 有时候,我们就需要在android下调用后端的webservice服务,因为在内部网络环境下,所有需要ba ...

  4. Android证书有效性验证方案

    1.前言: 1.1.SSL劫持攻击:          目前虽然很多Android APP使用了https通信方式,但是只是简单的调用而已,并未对SSL证书有效性做验证.在攻击者看来,这种漏洞让htt ...

  5. 【mob】Android短信验证+源码

    在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...

  6. Android版:验证手机号码的正则表达式 (转)

    /**  * 验证手机格式  */  public static boolean isMobileNO(String mobiles) {      /*     移动:134.135.136.137 ...

  7. Android 手机号码格式验证

    package com.app.android01 ; import android.app.Activity; import android.os.Bundle; import android.te ...

  8. Android 签名(4)验证是否签名

    判断Apk是否签名 用命令:jarsigner -verify  XXX.apk 增加 -verbose -certs 两个选项可显示更多信息. 如果有Android Debug字樣就是debug 如 ...

  9. Android版:验证手机号码的正则表达式

    http://blog.csdn.net/dai_zhenliang/article/details/8186249 /** * 验证手机格式 */ public static boolean isM ...

随机推荐

  1. UVA 1589:Xiangqi (模拟 Grade D)

    题目: 象棋,黑棋只有将,红棋有帅车马炮.问是否死将. 思路: 对方将四个方向走一步,看看会不会被吃. 代码: 很难看……WA了很多发,还越界等等. #include <cstdio> # ...

  2. linux nbd & qemu-nbd

    网络块设备:  Network Block Device   可以将一个远程主机的磁盘空间,当作一个块设备来使用.就像一块硬盘一样. 使用它,你可以很方便的将另一台服务器的硬盘空间,增加到本地服务器上 ...

  3. 针对各地项目icomet停止服务的临时处理办法

    1.编辑一个脚本 vi /usr/local/watchicomet.sh #!/bin/bash sn=`ps -ef | grep ./icomet-server | grep -v grep | ...

  4. 【原创】DataPackage-数据库、表的区域设置和系统不一致导致处理失败

    问题描述: 最近学习Datapackage,创建完之后,部署处理但总是提示某某字段的区域设置和目标字段的区域设置不一致,具体如图: 测试发现其它的数据库表又没有这类的问题发生,甚是苦恼,搜寻了好久,后 ...

  5. (24)C#log4net配置和使用

    一.下载并引用log4 DLL下载  http://logging.apache.org/  找到.net版本的 点击下载 找到编译好的bin 选择net 选择你项目对应的.net framework ...

  6. A/B Testing with Practice in Python (Part Two)

    This is the second part of A/B testing notes, which contains the practical issues and alternatives o ...

  7. 分层图【p4568】 [JLOI2011]飞行路线

    Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在nn个城市设有业务,设这些城市分别标记为\(0\)到\(n−1\),一共有\(m\)种航线 ...

  8. bzoj 5163: 第k大斜率

    5163: 第k大斜率 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 15  Solved: 4[Submit][Status][Discuss] D ...

  9. 四. Java继承和多态2. Java super关键字

    super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...

  10. ffmpeg yasm not found, use --disable-yasm for a crippled build

    yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE.解决这个问题方面有两个: 1.在网上下载一个yasm.exe并安装在mingw/bin下面,编译代码时你注意看, ...