短信验证码

来源:互联网 发布:人工智能计算器电脑版 编辑:程序博客网 时间:2024/06/07 14:37

1.Mob官网

2.使用3.0版本以下的(因为简单)

3.按照集成路径开始集成

public class RegisterActivity extends BaseAcitivty implements View.OnClickListener { private String TAG="msg"; private EditText edtRegisterPhone,edtRegisterPassword,edtRegisterCode; private Button btnRegisterCode,btnRegisterSend; private Timer timer; private int count=60; private TextView fanhui; private Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { int size= (int) msg.obj; if (size>0){ btnRegisterCode.setText(size+"秒后获取验证码"); btnRegisterCode.setEnabled(false); }else{ btnRegisterCode.setEnabled(true); btnRegisterCode.setText("重新获取验证码"); if (timer != null) { timer.cancel(); } count = 60; } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); initView(); btnRegisterCode.setOnClickListener(this); btnRegisterSend.setOnClickListener(this); fanhui.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } private void initView() { edtRegisterPhone= (EditText) findViewById(R.id.edt_register_phone); edtRegisterPassword= (EditText) findViewById(R.id.edt_register_password); edtRegisterCode= (EditText) findViewById(R.id.edt_register_code); btnRegisterCode= (Button) findViewById(R.id.btn_register_code); btnRegisterSend= (Button) findViewById(R.id.btn_register_send); fanhui= (TextView) findViewById(R.id.fanhui); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_register_code: String phone = edtRegisterPhone.getText().toString().trim(); if (!checkPhone(phone)) {//对手机号是否正确进行正则表达式校验 Toast.makeText(this, "请输入正确的手机号", Toast.LENGTH_SHORT).show(); } else { EventHandler eh = new EventHandler() { @Override public void afterEvent(int event, int result, Object data) { if (result == SMSSDK.RESULT_COMPLETE) { Log.i(TAG, "afterEvent: 回调完成"); //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { Log.i(TAG, "afterEvent: 提交验证码成功"); // 校验成功,可以把数据提交给服务器,做跳转 // 提交验证码成功 } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { Log.i(TAG, "afterEvent: 获取验证码成功"); //获取验证码成功 } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) { Log.i(TAG, "afterEvent: 返回支持发送验证码的国家列表"); //返回支持发送验证码的国家列表 } } else { ((Throwable) data).printStackTrace(); } } }; SMSSDK.registerEventHandler(eh); //注册短信回调 SMSSDK.getVerificationCode("+86", phone); timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { if (count > 0) { count--; } Message msg = Message.obtain(); msg.obj = count; mHandler.sendMessage(msg); } }, 0, 1000); } break; case R.id.btn_register_send: String Phone=edtRegisterPhone.getText().toString().trim(); String code=edtRegisterCode.getText().toString().trim(); SMSSDK.submitVerificationCode("86",Phone,code); Intent intent=new Intent(RegisterActivity.this,MainActivity.class); startActivity(intent); break; } } private boolean checkPhone(String phone) { return CheckUtils.isPhone(phone); }}
public class CheckUtils {    /**     * 验证手机格式     */    public static boolean isPhone(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 num = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。        if (TextUtils.isEmpty(phone)) {            return false;        } else {            //matches():字符串是否在给定的正则表达式匹配            return phone.matches(num);        }    }}