集成mob的SMSSDK获取短信验证码的Demo
2017-09-13 16:50
239 查看
一.下载Android Studio版本的SDK
下载地址:http://www.mob.com/downloadDetail/SMS/android
二.SDK配置阅读开发文档
开发文档地址:http://wiki.mob.com/sdk-sms-android-3-0-0/
三.界面布局activity_main.xml
四.布局逻辑的实现
下载地址:http://www.mob.com/downloadDetail/SMS/android
二.SDK配置阅读开发文档
开发文档地址:http://wiki.mob.com/sdk-sms-android-3-0-0/
三.界面布局activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="20dp" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_phone" android:text="手机号码:" android:textColor="#1A1A1A" android:textSize="18sp" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:id="@+id/et_phone" android:hint="请输入手机号码" android:gravity="center" android:maxLines="1" android:inputType="phone" android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/tv_phone" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout> <RelativeLayout android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_code" android:text="验证码:" android:textColor="#1A1A1A" android:textSize="18sp" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:id="@+id/et_code" android:hint="验证码" android:gravity="center" android:maxLines="1" android:layout_centerVertical="true" android:maxLength="6" android:layout_toRightOf="@+id/tv_code" android:layout_width="100dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btn_getCode" android:text="获取验证码" android:layout_marginLeft="1dp" android:background="@drawable/icon10" android:layout_centerVertical="true" android:layout_toRightOf="@+id/et_code" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout> <Button android:id="@+id/btn_verify" android:text="验证" android:textSize="20sp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
四.布局逻辑的实现
public class MainActivity extends Activity{ @BindView(R.id.et_phone) EditText etPhone; @BindView(R.id.et_code) EditText etCode; @BindView(R.id.btn_getCode) Button btnGetCode; private static final int GET_SUCCESS = 1;//获取验证码成功 private static final int SUBMIT_SUCCESS = 2;//验证成功 private static final int CHECK_FAILE = 3;//检查失败 private String mPhone;//手机号 private String mCode;//验证码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initBasic(); initSMSSDK(); } private void initBasic() { ButterKnife.bind(this); Logger.init("MainActivity"); } private void initSMSSDK() { //注册EventHandler监听,每次短信SDK操作回调, // 在EventHandler的4个回调方法都可能不在UI线程下,需要使用到消息处理机制。 SMSSDK.registerEventHandler(new EventHandler(){ @Override public void afterEvent(int event, int result, Object data) { super.afterEvent(event, result, data); //判断返回的结果 if(result == SMSSDK.RESULT_COMPLETE) { //服务器返回成功 if(event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { //获取验证码成功 mHandler.sendEmptyMessage(GET_SUCCESS ); }else if(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //校验成功 mHandler.sendEmptyMessage(SUBMIT_SUCCESS); } }else { //服务器返回错误码 Throwable throwable = (Throwable) data; Message msg = Message.obtain(); msg.what = CHECK_FAILE; msg.obj = throwable; mHandler.sendMessage(msg); } } }); } //获取验证码 @OnClick(R.id.btn_getCode) public void getVerifyCode() { mPhone = etPhone.getText().toString(); //判断手机号是否为空并且检查手机号的有效性 if(!TextUtils.isEmpty(mPhone) && checkPhoneValid(mPhone)) { SMSSDK.getVerificationCode("86", mPhone);//申请验证码,结果都在EventHandler监听返回 btnGetCode.setEnabled(false);//禁止按钮的可点击性 mTimer.start();//开始倒计时 }else { Logger.d("请输入正确的手机号码"); } } //验证验证码 @OnClick(R.id.btn_verify) public void submitVerify() { mCode = etCode.getText().toString(); //判断手机号和验证码都不为空 if(!TextUtils.isEmpty(mCode) && !TextUtils.isEmpty(mPhone)) { SMSSDK.submitVerificationCode("86",mPhone,mCode);//提交验证信息,结果都在EventHandler监听返回 } } private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case GET_SUCCESS ://获取成功处理 Logger.d("获取验证码成功...."); break; case SUBMIT_SUCCESS ://验证成功处理 Logger.d("验证成功"); mTimer.cancel(); etPhone.setText(""); etCode.setText(""); break; case CHECK_FAILE://服务器返回错误处理 Throwable data = (Throwable) msg.obj; Logger.d(data.getMessage()); break; default: break; } } }; /** * 倒计时60s,使用CountDownTimer类,只需实现onTick()和onFinish()方法 */ private CountDownTimer mTimer = new CountDownTimer(60000,1000) { @Override public void onTick(long millisUntilFinished) { //时间间隔固定回调该方法 btnGetCode.setText(millisUntilFinished/1000+"s重新获取"); } @Override public void onFinish() { //倒计时结束时,回调该方法 btnGetCode.setText("重新获取"); btnGetCode.setEnabled(true); } }; /** * 检查手机号码 */ private boolean checkPhoneValid(String mobiles){ Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"); Matcher m = p.matcher(mobiles); return m.matches(); } @Override protected void onDestroy() { super.onDestroy(); //注销所有EventHandler监听,避免内存泄露 SMSSDK.unregisterAllEventHandler(); } }
相关文章推荐
- Mob平台Smssdk获取短信验证码
- Android studio 下使用mob的短信验证码SMSSDK
- cocos2d-lua集成Mob-SMSSDK-for-android
- unity同时集成mob的sharesdk,smssdk,微信支付
- 根据环信官方文档集成EaseMobSdk的文本聊天的简单Demo
- Android实现获取短信验证码的功能SMSSDK-1.1.5.jar
- 集成mob的SMSsdk和shareSDK
- Android集成Mob平台获取短信验证码
- Android集成Mob平台获取短信验证码
- Android短信验证码SMSSDK集成与使用
- SMSSDK-短信验证码的集成实现
- 集成Mob 3.0免费获取手机验证码
- 集成环信时遇到的问题file not found: libEaseMobClientSDK.a
- 使用Mob的SDK集成到自己的工程中
- SMS_SDK短信验证 官方的新版本的获取验证码方法已经修改
- ANDROID集成支付宝SDK_APP应用支付宝开发DEMO
- 安卓漫漫路之集成三方短信SDK(MOB.com).
- Unity项目工程集成Mob的社会化分享SDK之发布到iOS平台
- Unity项目工程集成Mob社会化分享SDK(android篇)
- 安卓短信验证功能-----快速集成Mob之SecurityCodeSDK