[mob]Android手机短信验证(自定义的)
来源:互联网 发布:网络基础设施建设问题 编辑:程序博客网 时间:2024/05/20 00:53
package qq.bwei.com.phone;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import static cn.smssdk.SMSSDK.getSupportedCountries;
import static cn.smssdk.SMSSDK.getVerificationCode;
import static cn.smssdk.SMSSDK.submitVerificationCode;
public class MainActivity extends AppCompatActivity {
private EventHandler eventHandler;
private int i;
private EditText et_phone;
private EditText et_code;
private Button bt_getCode;
private Button bt_vertify;
private String phone;
private boolean tag=false;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what)
{
case 0x111:
bt_getCode.setText(“获取验证码(” + i + “)”);
bt_getCode.setClickable(false);
break;
case 0x112:
bt_getCode.setText(“获取验证码”);
bt_getCode.setClickable(true);
break;
}
switch (msg.arg1) {
case 10:
//客户端验证成功,可以进行注册,返回校验的手机和国家代码phone/country
Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
case 1:
//获取验证码成功
Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
case 2:
//返回支持发送验证码的国家列表
Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
}
}
};
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_phone = (EditText) findViewById(R.id.et_phone); et_code = (EditText) findViewById(R.id.et_code); bt_getCode = (Button) findViewById(R.id.bt_getCode); bt_vertify = (Button) findViewById(R.id.bt_verify); // 如果希望在读取通信录的时候提示用户,可以添加下面的代码,并且必须在其他代码调用之前,否则不起作用;如果没这个需求,可以不加这行代码 boolean boolShowInDialog = false; SMSSDK.setAskPermisionOnReadContact(boolShowInDialog); eventHandler=new EventHandler(){ // public static final String TAG = "TAG"; @Override public void afterEvent(int event, int result, Object data) { if (result == SMSSDK.RESULT_COMPLETE) { //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //提交验证码成功 Message msg = new Message(); msg.arg1 = 10; msg.obj = data; handler.sendMessage(msg); Log.d("xxx", "提交验证码成功"); } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { Message msg = new Message(); //获取验证码成功 msg.arg1 = 1; msg.obj = "获取验证码成功"; handler.sendMessage(msg); Log.d("xxx", "获取验证码成功"); } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) { Message msg = new Message(); //返回支持发送验证码的国家列表 msg.arg1 = 2; msg.obj = "返回支持发送验证码的国家列表"; handler.sendMessage(msg); Log.d("xxx", "返回支持发送验证码的国家列表"); } } else { Message msg = new Message(); //返回支持发送验证码的国家列表 msg.arg1 = 3; msg.obj = "验证失败"; handler.sendMessage(msg); Log.d("xxx", "验证失败"); ((Throwable) data).printStackTrace(); } } }; bt_getCode.setClickable(false); bt_getCode.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取验证码操作 phone = et_phone.getText().toString(); if(phone.equals("")){ Toast.makeText(MainActivity.this,"手机号不能为空",Toast.LENGTH_SHORT).show(); }else{ //填写了手机号码,isMobileNO(phone)判断号码格式 if(isMobileNO(phone)){ //如果手机号码无误,则发送验证请求 bt_getCode.setClickable(true); //让按钮的样式变成60S倒计时 changeBtnGetCode(); //SMSSDK中自带的2个方法 getSupportedCountries(); getVerificationCode("86", phone); }else{ //手机号格式有误 Toast.makeText(MainActivity.this,"手机号格式错误,请检查",Toast.LENGTH_SHORT).show(); } } } }); bt_vertify.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //验证操作 String code = et_code.getText().toString(); if (code.equals("")){ Toast.makeText(MainActivity.this,"验证码不能为空",Toast.LENGTH_SHORT).show(); }else{ //填写了验证码,进行验证,SMSSDK自带的方法 submitVerificationCode("86", phone, code); } } }); SMSSDK.registerEventHandler(eventHandler);}private void changeBtnGetCode() { Thread thread = new Thread() { @Override public void run() { if (tag) { while (i > 0) { i--; //如果活动为空 if (MainActivity.this == null) { break; } handler.sendEmptyMessage(0x111); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } tag = false; handler.sendEmptyMessage(0x112); return; } i = 60; tag = true; handler.sendEmptyMessage(0x112); changeBtnGetCode(); } }; thread.start();}private boolean isMobileNO(String phone) { /*移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188联通:130、131、132、152、155、156、185、186电信:133、153、180、189、(1349卫通)总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9*/ String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 if (TextUtils.isEmpty(phone)) return false; else return phone.matches(telRegex);}
}
- [mob]Android手机短信验证(自定义的)
- mob自定义短信验证
- android短信验证码(mob)
- 基于mob平台,手机短信验证码实现登录功能
- Android之短信验证码(用的Mob短信验证)
- 『实践』Android之短信验证码(用的Mob短信验证)
- 短信验证(mob)
- Android 手机短信验证
- android短信验证之Mob
- 【mob】Android短信验证+源码
- Android开发之MOB短信验证SDK的使用(一)
- Android开发之MOB短信验证SDK的使用(二)
- Android studio 下使用mob的短信验证码SMSSDK
- Android短信验证码mob,SMS的使用
- 手机短信验证的获取
- mob(sharedsdk)短信验证
- "fullLoad"app(三)之Mob短信验证的集成
- Android之免费短信验证Mob
- 不借助第三个变量交换两个整数
- 【每周论文】Graphene: Packing and Dependency-aware Scheduling for Data-Parallel Clusters(OSDI 2016)
- Linux功耗管理(4)_Power Management Interface
- Java笔记:数组
- @Scheduled Spring定时任务每次执行两次解决方案
- [mob]Android手机短信验证(自定义的)
- python数据结构-栈
- ubuntu16.04安装pycharm
- LocalAlloc,VirtualAlloc,malloc,new的异同
- python基础--数据类型之间的转换
- Hadoop2.6.0安装教程
- Java模板引擎之 FreeMarker
- Spring MVC小案例
- Linux触摸屏驱动-jz2440