栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mob之短信验证集成SMSSDK

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mob之短信验证集成SMSSDK

开发过程中总会遇到短信验证这些操作,这周没有来得及写新的东西,借此分享一篇以前学习短信验证的笔记,本文使用的是 Mob 提供的 SMSSDK .

下载 SMSSDK

官网下载地址:SMSSDK

集成 SMSSDK

将 MobCommons.jar、MobTools.jar、SMSSDK-2.0.1.aar、SMSSDKGUI-2.0.1.aar 放到了app 的 libs 目录下,如果不需要带界面的 SMSSDK 可以不添加 SMSSDKGUI-2.0.1.aar,具体文件请参考最新的 SMSSDK。

配置 build.gradle 文件

打开 app 下面的 build.gradle 文件进行如下配置:

配置AndroidManifest.xml

在 AndroidManifest.xml 文件中配置权限和Application.

配置权限










配置 application

启动 SDK
public class MyApplication extends Application {
    @Override
    public void onCreate() {
 super.onCreate();
 SMSSDK.initSDK(this, "您的appkey", "您的appsecret");
    }
}
参考代码

实现一个简单的案例,获取验证码,并进行验证。

布局文件


    
 
 
 

    
    
 
 
 
    


MainActivity


public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private EditText et_number;
    private EditText et_checkCode;

    private TextView tv_getCheckCode;
    private TextView tv_sendCheckCode;

    private String phoneNumber;
    private String checkCode;
    private ProgressDialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 et_number = (EditText) findViewById(R.id.et_number);
 et_checkCode = (EditText) findViewById(R.id.et_checkCode);
 tv_getCheckCode = (TextView) findViewById(R.id.tv_getCheckCode);
 tv_sendCheckCode = (TextView) findViewById(R.id.tv_sendCheckCode);

 checkCode = et_checkCode.getText().toString().trim();

 tv_getCheckCode.setOnClickListener(this);
 tv_sendCheckCode.setOnClickListener(this);

 //注册短信回调
 SMSSDK.registerEventHandler(ev);
    }

    
    private EventHandler ev = new EventHandler() {
 @Override
 public void afterEvent(int event, int result, Object data) {
     if (result == SMSSDK.RESULT_COMPLETE) { //回调完成
  //提交验证码成功,如果验证成功会在data里返回数据。data数据类型为HashMap
  if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
      Log.e("TAG", "提交验证码成功" + data.toString());
      HashMap mData = (HashMap) data;
      String country = (String) mData.get("country");//返回的国家编号
      String phone = (String) mData.get("phone");//返回用户注册的手机号

      Log.e("TAG", country + "====" + phone);

      if (phone.equals(phoneNumber)) {
   runOnUiThread(new Runnable() {//更改ui的操作要放在主线程,实际可以发送hander
@Override
public void run() {
    showDailog("恭喜你!通过验证");
    dialog.dismiss();
}
   });
      } else {
   runOnUiThread(new Runnable() {
@Override
public void run() {
    showDailog("验证失败");
    dialog.dismiss();
}
   });
      }

  } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {//获取验证码成功
      Log.e("TAG", "获取验证码成功");
  } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {//返回支持发送验证码的国家列表

  }
     } else {
  ((Throwable) data).printStackTrace();
     }
 }
    };

    private void showDailog(String text) {
 new alertDialog.Builder(this)
  .setTitle(text)
  .setPositiveButton("确定", null)
  .show();
    }

    @Override
    public void onClick(View v) {
 switch (v.getId()) {
     case R.id.tv_getCheckCode:
  toast("getCode");
  getCheckCode();
  break;
     case R.id.tv_sendCheckCode:
  toast("sendCode");
  sendCheckCode();
  break;
 }
    }

    
    public void getCheckCode() {
 phoneNumber = et_number.getText().toString().trim();
 //发送短信,传入国家号和电话号码
 if (TextUtils.isEmpty(phoneNumber)) {
     toast("号码不能为空!");
 } else {
     SMSSDK.getVerificationCode("+86", phoneNumber);
     toast("发送成功!");
 }
    }

    
    private void sendCheckCode() {
 checkCode = et_checkCode.getText().toString();
 if (!TextUtils.isEmpty(checkCode)) {
     dialog = ProgressDialog.show(this, null, "正在验证...", false, true);
     //提交短信验证码
     SMSSDK.submitVerificationCode("+86", phoneNumber, checkCode);//国家号,手机号码,验证码
     Toast.makeText(this, "提交了注册信息:" + phoneNumber, Toast.LENGTH_SHORT).show();
 } else {
     Toast.makeText(this, "验证码不能为空", Toast.LENGTH_SHORT).show();
 }
    }

    
    public void toast(String info){
 Toast.makeText(MainActivity.this, info, Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
 SMSSDK.unregisterEventHandler(ev);
 super.onDestroy();
    }
}

测试效果

稍等一下,gif动画时间有点长,为了接收到短信哦!

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号