Android 登陆页面发送短信

//最重要的一步一定要有这一步

1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,如下所示:

buildscript {
repositories {

}
dependencies {

//只需要加我注释下面这个
classpath “com.mob.sdk:MobSDK:+”
}
}
在这里插入图片描述

在使用SMSSDK模块的build.gradle中,添加MobSDK插件和扩展,如下所示:
只要是关于申请的你需要去虹软 申请
// 添加插件
apply plugin: ‘com.mob.sdk’

// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
appKey “申请Mob的appkey”
appSecret “申请Mob的AppSecret”
SMSSDK {}
}

在这里插入图片描述

//接下来我们想要做的是一个注册页面,点击发送短信得到一个短信验证
在这里插入图片描述

//废话不多说直接上代码
无论是textview还是button都可以
layout布局

<TextView

    android:id="@+id/regist_duanxin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="短信验证注册"
    android:textSize="10sp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@id/line_pass"
    android:layout_marginRight="@dimen/dp_40"
    android:layout_marginTop="@dimen/dp_10"/>

代码
在逻辑层写这个,可以直接拷贝
protected void initData() {

    //短信验证的集成sdk
    new EventHandler() {
        @Override
        public void afterEvent(int event, int result, Object data) {
            super.afterEvent(event, result, data);
            Message msg = new Message();
            msg.arg1 = event;
            msg.arg2 = result;
            msg.obj = data;
            mHandler.sendMessage(msg);
        }
    };
}

//我在点击事件里面写的
你们直接在我短信验证的点击事件里面看就ok

@OnClick({R.id.regist_duanxin, R.id.lregist_regist,R.id.regist_login})

public void onClick(View view) 
    switch (view.getId()) {
        //短信验证
        case R.id.regist_duanxin:
            //判断手机号是否为空
            //空
            if(TextUtils.isEmpty(registPhone.getText())){
                Toast.makeText(RegisterActivity.this, "手机号为空", Toast.LENGTH_SHORT).show();
            }else {
                // 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
                SMSSDK.getVerificationCode("86", registPhone.getText().toString());

                //短信验证倒计时/可以不添加
                timer = new CountDownTimer(60 * 1000, 1000) {
                    @Override
                    public void onTick(long millisUntilFinished) {
                        //防止计时过程中重复点击
                        registDuanxin.setClickable(false);
                        registDuanxin.setText(millisUntilFinished / 1000 + "秒后重新获取");
                    }
                    @Override
                    public void onFinish() {
                        设置可点击
                        registDuanxin.setClickable(true);
                        //重新设置文字
                        registDuanxin.setText("重新发送");
                    }
                };
                //开启
                timer.start();
            }
            break;
           
            
//handler机制直接复制就ok

private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        int event = msg.arg1;
        int result = msg.arg2;
        Object data = msg.obj;
        if (result == SMSSDK.RESULT_COMPLETE) {
            //短信注册成功后,返回MainActivity,然后提示新好友
            if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {//提交验证码成功
                Toast.makeText(RegisterActivity.this, "提交验证码成功", Toast.LENGTH_SHORT).show();

            } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                //已经验证
                Toast.makeText(RegisterActivity.this, "验证码已经发送", Toast.LENGTH_SHORT).show();
            } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
                //已经验证
                Toast.makeText(RegisterActivity.this, "获取国家列表成功", Toast.LENGTH_SHORT).show();//                    textV.setText(data.toString());
            }

        } else {
            int status = 0;
            try {
                ((Throwable) data).printStackTrace();
                Throwable throwable = (Throwable) data;

                JSONObject object = new JSONObject(throwable.getMessage());
                String des = object.optString("detail");
                status = object.optInt("status");
                if (!TextUtils.isEmpty(des)) {
                    //Toast.makeText(getActivity(), des, Toast.LENGTH_SHORT).show();
                    return;
                }
            } catch (Exception e) {
                SMSLog.getInstance().w(e);
            }
        }
    }
};

//当点击注册时,清除conutdowntimer函数/ 清除倒计时函数,解决验证码输入正确后停止计时

private void clearTimer() {
    //短信倒计时生成的函数
    if (timer != null) {
        timer.cancel();
        timer = null;
    }
}

/ /最后记得要销毁一下

@Override

protected void onDestroy() {
    super.onDestroy();
    SMSSDK.unregisterAllEventHandler();
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值