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); } }
短信验证码
最新推荐文章于 2022-07-08 10:51:57 发布