android mob 短信验证码 功能

1.到Mob开发者平台下载最新SMSSDK 和注册APP key

2.导入arr包 配置Gradle 和AndroidManifest(参考官方文档) 因为不需要自带的GUI 所以没有添加GUI.arr包



3核心代码

3.1SMSSDK的初始化
   
   
SMSSDK.initSDK(this, "12f413f6f7221", "4cb5d7d306617140414add61a72a9860"); //初始化 越早越好
3.2 注册回调接口   处理回调事件  
发送 验证码 和   验证验证码都会有相应的回调   事件接收器可以定义多个   事件接收器不是UI线程  不能更新ui  并且需要在合适时候 注销回调 防止内存溢出。
   
   
//SMSSDK中注册一个事件接收器
EventHandler eh = new EventHandler() {
@Override
public void afterEvent(int event, int result, final Object data) {
 
if (result == SMSSDK.RESULT_COMPLETE) {
//回调完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //提交验证码成功 (使用自己的服务器就不需要了)
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "验证成功 可进行其他操作了", Toast.LENGTH_SHORT).show();
}
});
} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE || event == SMSSDK.EVENT_GET_VOICE_VERIFICATION_CODE) {
//获取验证码成功 普通验证码 语音验证码
Log.e("zsp", "获取验证码成功: ");
//这里不是ui线程
 
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "获取验证码成功", Toast.LENGTH_SHORT).show();
}
});
} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
//返回支持发送验证码的国家列表
Log.e("zsp", "返回支持发送验证码的国家列表: " + data);
}
} else {
//#if def{lang} == cn
// 根据服务器返回的网络错误,给toast提示
//#elif def{lang} == en
// show toast according to the error code
//#endif
try {
Throwable throwable = (Throwable) data;
throwable.printStackTrace();
JSONObject object = new JSONObject(throwable.getMessage());
final String des = object.optString("detail");//错误描述
final int status = object.optInt("status");//错误代码
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "错误代码:" + status + "\n错误描述:" + des, Toast.LENGTH_SHORT).show();
}
});
} catch (Exception e) {
//do something
}
}
}
};
SMSSDK.registerEventHandler(eh); //注册短信回调
}
    
    
@Override
protected void onStop() {
super.onStop();
SMSSDK.unregisterAllEventHandler();//注销回调防止内存溢出
}
3.3 获取短信验证码接口
3.3.1普通获取短信验证码接口
   
   
public void getVocde(View v) {
 
String phone = etPhone.getText().toString().trim();
if (phone.isEmpty()) {
Toast.makeText(MainActivity.this, "请输入手机号", Toast.LENGTH_SHORT).show();
} else {
//请求获取短信验证码,在监听中返回
SMSSDK.getVerificationCode("86", phone);
}
}
3.3.2获取语音短信验证码接口
   
   
public void getSmartVcode(View v) {
String phone = etPhone.getText().toString().trim();
if (phone.isEmpty()) {
Toast.makeText(MainActivity.this, "请输入手机号", Toast.LENGTH_SHORT).show();
} else {
//请求获取短信验证码,在监听中返回 // 第一个参数代表国家 可以获取 我这里直接写死了
SMSSDK.getVoiceVerifyCode("86", phone);//语音验证码
}
}
3.4验证验证码
3.4.1 使用Mob服务器验证

   
   
/**
* 提交验证码到mob 服务器
*/
public void detection(View view) {
String phone = etPhone.getText().toString().trim();
String vcode = etVcode.getText().toString();
if (phone.isEmpty()) {
Toast.makeText(MainActivity.this, "请输入手机号", Toast.LENGTH_SHORT).show();
} else {
if (vcode.isEmpty()) {
Toast.makeText(MainActivity.this, "请输入验证码", Toast.LENGTH_SHORT).show();
} else {
SMSSDK.submitVerificationCode("86", phone, vcode);
Log.e("zsp", phone+" "+vcode);
}
}
}

3.4.2 使用自己的服务器验证

(手机提交验证请求到服务器 服务器 通过平台开放的接口验证短信 )
参考Mob 服务器验证接口。

4效果图



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值