android实现免费短信验证
前言
获取短信验证码的的第三方很多,今天介绍一个获取短信验证码的demo,它有以下优势
- 短信到达率几乎100%
- 代码经过我封装,集成简单
- 获取短信验证码免费
下面对此demo的讲解涉及以下内容:
- 短信平台使用简介
- 短信验证集成配置
- 短信验证代码封装
- 倒计时类简单讲解
- 短信验证在代码中的使用
- 项目结构与效果图
实现过程
一.短信平台使用简介
短信平台地址及此平台发送短信验证的特点在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实现免费短信验证
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
android实现免费短信验证的更多相关文章
- Android从零单排之免费短信验证
介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息验证支付等.短信验证利用短信验证码来注册会员,大大降低了非法注册,很大程度上提高了用户账户的安全性. 目前市面上已经有了很多提供 ...
- Android免费短信验证
转载请注明住处:http://blog.csdn.net/crazy1235/article/details/41912003 介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息 ...
- android下身份验证方式调用webservice
在企业开发领域,webservice还是经常被用到的服务体系,因为他对安全事务支持都比较好. 有时候,我们就需要在android下调用后端的webservice服务,因为在内部网络环境下,所有需要ba ...
- Android证书有效性验证方案
1.前言: 1.1.SSL劫持攻击: 目前虽然很多Android APP使用了https通信方式,但是只是简单的调用而已,并未对SSL证书有效性做验证.在攻击者看来,这种漏洞让htt ...
- 【mob】Android短信验证+源码
在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...
- Android版:验证手机号码的正则表达式 (转)
/** * 验证手机格式 */ public static boolean isMobileNO(String mobiles) { /* 移动:134.135.136.137 ...
- Android 手机号码格式验证
package com.app.android01 ; import android.app.Activity; import android.os.Bundle; import android.te ...
- Android 签名(4)验证是否签名
判断Apk是否签名 用命令:jarsigner -verify XXX.apk 增加 -verbose -certs 两个选项可显示更多信息. 如果有Android Debug字樣就是debug 如 ...
- Android版:验证手机号码的正则表达式
http://blog.csdn.net/dai_zhenliang/article/details/8186249 /** * 验证手机格式 */ public static boolean isM ...
随机推荐
- 获取dnspod指定域名的记录
#!/usr/bin/python #-*- coding: utf-8 -*- import os,requests,json import re,time,xlsxwriter #时间 date= ...
- 如何使用python下载网站上的视频
youtube-dl 从名字上也能看出来,是专门用来下载YouTube的视频. 不过本人对YouTube不感兴趣,但是这个模块可以用来下载bilibili上的视频我们就来试一试 首先pip insta ...
- 文件夹操作-DirectoryInfo类
DirectoryInfo类是一个密封类,它可以用来创建.移动.枚举目录和子目录.DirectoryInfo类包括4个属性,可以用来获取目录的名称.父目录等. DirectoryInfo类的属性表 属 ...
- UVA 1593: Alignment of Code(模拟 Grade D)
题意: 格式化代码.每个单词对齐,至少隔开一个空格. 思路: 模拟.求出每个单词最大长度,然后按行输出. 代码: #include <cstdio> #include <cstdli ...
- Appium+python自动化18-brew、carthage和appium-doctor【转载】
前言 本篇安装brew.carthage,解决启动appium时的报错问题,另外安装appium-doctor检查appium的环境 1.brew 2.carthage 3.appium-doctor ...
- 天猫首页迷思之-jquery实现整个div的懒加载(1)
懒加载是众所周知的减少网页负载,提高性能的方法,不少大型用图片用的多的网站都用到了. 于是我网上一搜,得到一插件:jquery.lazyload 网址:http://www.appelsiini ...
- (22)C#windows打包部署
程序做好后需要打包部署后才能使用 一.创建安装项目 解决方案右键-添加-新建项目-其他项目类型-安装和部署-双击进入文件系统. 二.制作安装程序 一个完整的安装程序包括项目输出文件.内容文件.桌面快捷 ...
- 从vue.js的源码分析,input和textarea上的v-model指令到底做了什么
v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能:对,它本质上只是一个语法糖,但到底是一个 ...
- java内存缓存,节省内存
缓存的对象 这个问题就是我们上面提到的极端情况,在Java中,会对-128到127的Integer对象进行缓存,当创建新的Integer对象时,如果符合这个这个范围,并且已有存在的相同值的对象,则返回 ...
- CSS3快速浏览器前缀的方法
在做前端开发时,经常要在css3的属性前加上各浏览器厂商的前缀:,如 Chrome(谷歌浏览器) :-webkit- Safari(苹果浏览器) :-webkit- Firefox(火狐浏览器) :- ...