MobSMSSDK

image.png

加入以下权限

<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.RECEIVE_SMS" />

<uses-permission android:name="android.permission.GET_TASKS" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

初始化SDK,使用前必须初始化,所以这里直接在application里面进行初始化
记得在AndroidManifest.xml


public class MyApplication extends MobApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        MobSDK.init(getApplicationContext(),"您的appkey", "您的appsecret");
    }

}

获取验证码的代码

  //用户点击获取验证码
    @OnClick(R.id.get_code_tv)
    public void onGetCodeClick(TextView getVerificationCode) {
        //用户号码
        String userPhoneNumb = mUserName.getText().toString();
        if (StringUtil.isChinaPhoneLegal(userPhoneNumb) || userPhoneNumb.length() != 11) {
            Snackbar.make(mActivitySplash, "请输入正确的手机号", Snackbar.LENGTH_SHORT).show();
            return;
        }
        mGetCodeTv.setClickable(false);
        //定时器
        if(mTimer==null) {
            mTimer = new Timer();
        }
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                // 需要做的事:发送消息
                runOnUiThread(new Runnable() {
                    public int clock = 60;

                    @Override
                    public void run() {
                        if (clock < 0) {
                            clock = 60;
                            mGetCodeTv.setClickable(true);
                            mGetCodeTv.setText("重新获取");
                            mTimer.cancel();
                            mTimer = null;
                            return;
                        }
                        mGetCodeTv.setText("重新获取"+"("+String.valueOf(clock--)+")");
                    }
                });
            }
        };
        mTimer.schedule(task, 1000, 1000); // 1s后执行task,经过1s再次执行
        // 创建EventHandler对象
        eventHandler = new EventHandler() {
            public void afterEvent(int event, int result, Object data) {
                if (result == SMSSDK.RESULT_ERROR) {
                    //验证失败
                    //错误码请参照http://wiki.mob.com/android-api-错误码参考/这里我就不再继续写了
                    String message = ((Throwable) data).getMessage();
                    ResultBean resultBean = (ResultBean) JsonUtil.JsonStr2Bean(message, ResultBean.class);
                    Snackbar.make(mActivitySplash, resultBean.detail, Snackbar.LENGTH_SHORT).show();
                }
                if (result == SMSSDK.RESULT_COMPLETE) {
                    //回调完成
                    if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                        //提交验证码成功(验证成功)
                        Snackbar.make(mActivitySplash, "提交验证码成功", Snackbar.LENGTH_SHORT).show();
                    } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                        //获取验证码成功
                        Snackbar.make(mActivitySplash, "获取验证码成功", Snackbar.LENGTH_SHORT).show();
                    }
                } else {
                    ((Throwable) data).printStackTrace();
                }
            }
        };
        // 注册监听器
        SMSSDK.registerEventHandler(eventHandler);
        //获取验证码
        SMSSDK.getVerificationCode("86", userPhoneNumb);
    }

确认注册,进行验证

 //用户点击确认修改
    @OnClick(R.id.regist_btn)
    public void onSureRegistClick(Button sureRegist) {
        if(!Cons.NETWORK) {
            Snackbar.make(mActivitySplash, "网络异常", Snackbar.LENGTH_SHORT).show();
            return;
        }
        String userPhoneNumb = mUserName.getText().toString();
        String userPwd = mPassword.getText().toString();
        String verificationCode = mVerificationCode.getText().toString();
        if (TextUtils.isEmpty(userPhoneNumb) || TextUtils.isEmpty(userPwd)) {
            Snackbar.make(mActivitySplash, "帐号或密码为空", Snackbar.LENGTH_SHORT).show();
            return;
        }
        if (StringUtil.isChinaPhoneLegal(userPhoneNumb) || userPhoneNumb.length() != 11) {
            Snackbar.make(mActivitySplash, "请输入正确的手机号", Snackbar.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(verificationCode)) {
            Snackbar.make(mActivitySplash, "验证码为空", Snackbar.LENGTH_SHORT).show();
            return;
        }
        if (userPwd.length()<6||userPwd.length()>16) {
            Snackbar.make(mActivitySplash, "密码长度不正确", Snackbar.LENGTH_SHORT).show();
            return;
        }
        SMSSDK.submitVerificationCode("86", userPhoneNumb, mVerificationCode.getText()
                .toString());
    }

在销毁的时候记得销毁

protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterEventHandler(eventHandler);
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,854评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,976评论 25 708
  • 前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注...
    Boyko阅读 3,656评论 8 135
  • 以下是原文内容 暴风影音5.2.6 iOS版更新代价居然是,杀程序员祭天。 老王我看了后,作为前程序员的我感觉心里...
    MacShare阅读 676评论 0 0
  • 简书应该将会成为我最静的聆听者了。 夜幕之时,思绪万千。 拍下这张照之时,我对于自己说,我将要拥有以前失去的东西,...
    张景添添阅读 231评论 0 0