//最重要的一步一定要有这一步
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();
}