短信验证码

package com.example.loging;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class MainActivity extends AppCompatActivity {

    private static final int MSG_1 =1 ;
    private static final int MSG_2 = 2;
    @BindView(R.id.edit_phone)
    EditText editPhone;
    @BindView(R.id.edit_yanzheng)
    EditText editYanzheng;
    @BindView(R.id.btn_login)
    Button btnLogin;
    @BindView(R.id.login)
    Button login;
    private int time=10;
    private String num;
    private  Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(msg.what==1){
                time--;

                btnLogin.setText("正在获取稍等"+time);
            }else if(msg.what==2){
               time=10;
                btnLogin.setFocusable(true);
                btnLogin.setText("重新获取");
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        SMSSDK.setAskPermisionOnReadContact(true);
        // 注册一个事件回调,用于处理SMSSDK接口请求的结果
        SMSSDK.registerEventHandler(eventHandler);
    }


    EventHandler eventHandler = new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            // afterEvent会在子线程被调用,因此如果后续有UI相关操作,需要将数据发送到UI线程
            Message msg = new Message();
            msg.arg1 = event;
            msg.arg2 = result;
            msg.obj = data;
            new Handler(Looper.getMainLooper(), new Handler.Callback() {
                @Override
                public boolean handleMessage(Message msg) {
                    int event = msg.arg1;
                    int result = msg.arg2;
                    Object data = msg.obj;
                    if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                        if (result == SMSSDK.RESULT_COMPLETE) {
                            Toast.makeText(MainActivity.this, "验证码下发成功", Toast.LENGTH_SHORT).show();
                            // TODO 处理成功得到验证码的结果
                            // 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
                        } else {
                            // TODO 处理错误的结果
                            Toast.makeText(MainActivity.this, "验证码失败", Toast.LENGTH_SHORT).show();
                            ((Throwable) data).printStackTrace();
                        }
                    } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                        if (result == SMSSDK.RESULT_COMPLETE) {
                            // TODO 处理验证码验证通过的结果
                            Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                        } else {
                            // TODO 处理错误的结果
                            ((Throwable) data).printStackTrace();
                            Toast.makeText(MainActivity.this, "验证码不正确", Toast.LENGTH_SHORT).show();
                        }
                    }
                    // TODO 其他接口的返回结果也类似,根据event判断当前数据属于哪个接口
                    return false;
                }
            }).sendMessage(msg);
        }
    };
    
    @OnClick({R.id.login,R.id.btn_login})
    public void onClick(View view) {
        switch (view.getId()){


            case R.id.login:
                String code = editYanzheng.getText().toString().trim();
                Toast.makeText(MainActivity.this, "验证码:"+code, Toast.LENGTH_SHORT).show();
                SMSSDK.submitVerificationCode("86", num,  code);

                break;
             case R.id.btn_login:
                 num = editPhone.getText().toString().trim();
                 if(TextUtils.isEmpty(num)){
                     return;
                 }
                 SMSSDK.getVerificationCode("86", num);
                 Toast.makeText(MainActivity.this, "验证码:", Toast.LENGTH_SHORT).show();

                           new  Thread(){
                               @Override
                               public void run() {
                                   super.run();
                                 while(time>0){
                                     handler.sendEmptyMessage(MSG_1);
                                     try {
                                         Thread.sleep(3000);
                                     } catch (InterruptedException e) {
                                         e.printStackTrace();
                                     }
                                 }
                                   handler.sendEmptyMessage(MSG_2);

                               }
                           }.start();


                 break;
        }


    }


    // 使用完EventHandler需注销,否则可能出现内存泄漏
    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterEventHandler(eventHandler);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值