手机短信验证的获取

1,先按照mob的要求,下载SMSSDK,并在清单文件中设置:

http://wiki.mob.com/sms-android-%E6%97%A0gui%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8/


2,自定义登录页面的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context="com.vily.sdkmsmhaha.MainActivity">

    <EditText
        android:id="@+id/phone"
        android:hint="请输入手机号"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText
        android:id="@+id/psw"
        android:hint="请输入密码"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/verification"
            android:hint="请输入验证码"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <Button
            android:id="@+id/getVerification"
            android:text="获取验证码"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    <Button
        android:id="@+id/complete"
        android:text="注册完成"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>


3,java代码:

package com.vily.sdkmsmhaha;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class MainActivity extends AppCompatActivity {

    @InjectView(R.id.phone)
    EditText mPhone;
    @InjectView(R.id.psw)
    EditText mPsw;
    @InjectView(R.id.verification)
    EditText mVerification;
    @InjectView(R.id.getVerification)
    Button mGetVerification;
    @InjectView(R.id.complete)
    Button mComplete;
    private EventHandler mEventHandler;

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

        // 如果希望在读取通信录的时候提示用户,可以添加下面的代码,并且必须在其他代码调用之前,否则不起作用;如果没这个需求,可以不加这行代码
//        SMSSDK.setAskPermisionOnReadContact(boolShowInDialog);

        // 创建EventHandler对象
        // 这里是验证成功的回调,可以处理验证成功后您自己的逻辑,需要注意的是这里不是主线程
        mEventHandler = new EventHandler() {
            public void afterEvent(int event, int result, Object data) {
                if (data instanceof Throwable) {
                    Throwable throwable = (Throwable) data;
                    final String msg = throwable.getMessage();
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
                        }
                    });
                } else {
                    if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                        // 这里是验证成功的回调,可以处理验证成功后您自己的逻辑,需要注意的是这里不是主线程

                        System.out.println("------------------data+" + "获取验证码成功"+data);
                    }
                }
            }
        };

        // 注册监听器
        SMSSDK.registerEventHandler(mEventHandler);
    }

    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterEventHandler(mEventHandler);
    }

    @OnClick({R.id.getVerification, R.id.complete})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.getVerification:
                String phone = mPhone.getText().toString().trim();
                SMSSDK.getVerificationCode("86", phone);发送短信验证码到手机号  86表示的是中国
                break;
            case R.id.complete:
                break;
        }
    }


}

4,registerEventHandler 建议用mob的

EventHandler eh=new EventHandler(){
 
			@Override
			public void afterEvent(int event, int result, Object data) {
 
			   if (result == SMSSDK.RESULT_COMPLETE) {
				//回调完成
				if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                //提交验证码成功
				}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
			    //获取验证码成功
				}else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
                //返回支持发送验证码的国家列表
                } 
              }else{                                                                 
                 ((Throwable)data).printStackTrace(); 
          }
      } 
   }; 
SMSSDK.registerEventHandler(eh); //注册短信回调


5,注册完成的点击事件,在这里校验验证码


	String vCode = mEdittxtCode.getText().toString().trim();
        if (TextUtils.isEmpty(vCode)) {
            ToastUtils.show(this, R.string.smssdk_write_identify_code);
            return;
        }
        SMSSDK.submitVerificationCode("86",mPhone,vCode);
        mDialog.show();

6,点击获取验证码,100秒后再次获取验证码:  这里可以和上面的获取验证码的 handler  合并

 public void onViewClicked() {

        SMSSDK.getVerificationCode("86", mPhone);
        mTimerView = new CountTimerView(mBtnReSend,R.string.smssdk_resend_identify_code);
        mTimerView.start();

        mDialog.setMessage("正在重新获取验证码");
        mDialog.show();
}

7,在handler 里面 ,判断验证码是否提交成功

class SMSEvenHanlder extends EventHandler{

        @Override
        public void afterEvent(final int event, final int result,
                               final Object data) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    System.out.println("-----------------data+2+"+data);
                    if(mDialog !=null && mDialog.isShowing())
                        mDialog.dismiss();

                    if (result == SMSSDK.RESULT_COMPLETE) {
                          if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {

                              ToastUtils.show(getApplicationContext(),"验证成功:");
                              System.out.println("-----------------data+2+验证成功");
                              doReg();
                              mDialog.setMessage("正在提交注册信息");
                              mDialog.show();
                            }
                    } else {

                        // 根据服务器返回的网络错误,给toast提示
                        try {
                            ((Throwable) data).printStackTrace();
                            Throwable throwable = (Throwable) data;

                            JSONObject object = new JSONObject(
                                    throwable.getMessage());
                            String des = object.optString("detail");
                            if (!TextUtils.isEmpty(des)) {
//                                ToastUtils.show(RegActivity.this, des);
                                return;
                            }
                        } catch (Exception e) {
                            SMSLog.getInstance().w(e);
                        }

                    }


                }
            });
        }
    }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值