手机获取验证码 ---SMS

来源:互联网 发布:两年数据对比ppt 编辑:程序博客网 时间:2024/06/10 03:59

本人通过mob官网进行学习此demo此官网也可以进行操作的三登录功能
进入官网之后的路或者注册账号,进行下载sdk
这里写图片描述

下载完成之后我们解压得到几个文件,里面我们有几个会用到的

这里写图片描述

我们将后4个包进行添加到工程的lib里面进行编译即可使用;

接下来就是各种操作进行实现功能,下面是在build_gradle面进行配置(必须要进行的一个操作)

repositories{    flatDir{        dirs 'libs' //就是你放aar的目录地址    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile name:'SMSSDK-3.0.0',ext:'aar'    compile name:'SMSSDKGUI-3.0.0',ext:'aar'    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.4.0'}

这里写图片描述

紧接着就是在清单文件里面进行配置

//我们需要用到的权限  <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.READ_SMS" />    <uses-permission android:name="android.permission.GET_TASKS" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><activity            android:name="com.mob.tools.MobUIShell"            android:theme="@android:style/Theme.Translucent.NoTitleBar"            android:configChanges="keyboardHidden|orientation|screenSize"        //{这个是在mob官网里面创建应用获得到的appkey} android:windowSoftInputMode="stateHidden|adjustResize"/>             <meta-data android:name="Mob-AppKey" android:value="203480017e7a1"/>           //{这个是在mob官网里面创建应用获得到的appcreat}        <meta-data android:name="Mob-AppSecret" android:value="5399c9fbbfaa4a92360885c1bef9b1a0{这个是在mob官网里面创建应用获得到的}"/>

然后是我的布局文件.xml

<EditText        android:id="@+id/phone"        android:hint="请输入手机号"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:inputType="phone"/>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">            <EditText                android:id="@+id/yzm"                android:hint="输入验证码"                android:layout_weight="1"                android:layout_width="0dp"                android:layout_height="wrap_content" />        <Button            android:id="@+id/huoqu_btn"            android:layout_weight="1"            android:layout_width="0dp"            android:onClick="onClick"            android:layout_height="wrap_content"            android:text="获取验证码"/>    </LinearLayout>    <Button        android:id="@+id/btn"        android:text="登录"        android:onClick="onClick"        android:layout_width="match_parent"        android:layout_height="wrap_content" />

最后进行展示的就我集成好的代码文件:请看下面

package renchaofang.bawei.com.smsstudy;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.view.Window;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import cn.smssdk.EventHandler;import cn.smssdk.SMSSDK;import static cn.smssdk.SMSSDK.getSupportedCountries;import static cn.smssdk.SMSSDK.getVerificationCode;import static cn.smssdk.SMSSDK.submitVerificationCode;public class MainActivity extends AppCompatActivity{    private final String TAG="--MainActivity--";    private EventHandler eventHandler;    private EditText phone;    private EditText yzm;    private Button button1;    private Button button2;    private EventHandler eh;    private boolean isChange;    //控制按钮样式是否改变    private boolean tag = true;    //每次验证请求需要间隔60S    private int i=60;    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            switch (msg.arg1) {                case 0:                    //客户端验证成功,可以进行注册,返回校验的手机和国家代码phone/country                    Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();                    break;                case 1:                    //获取验证码成功                    Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();                    break;                case 2:                    //返回支持发送验证码的国家列表                    Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();                    break;            }        }    };    private String yan;    private String iphone;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        //找到资源控件        init();        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) {                        //提交验证码成功                        Message msg = new Message();                        msg.arg1 = 0;                        msg.obj = data;                        handler.sendMessage(msg);                        Log.d(TAG, "提交验证码成功");                    } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {                        Message msg = new Message();                        //获取验证码成功                        msg.arg1 = 1;                        msg.obj = "获取验证码成功";                        handler.sendMessage(msg);                        Log.d(TAG, "获取验证码成功");                    } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {                        Message msg = new Message();                        //返回支持发送验证码的国家列表                        msg.arg1 = 2;                        msg.obj = "返回支持发送验证码的国家列表";                        handler.sendMessage(msg);                        Log.d(TAG, "返回支持发送验证码的国家列表");                    }                } else {                    Message msg = new Message();                    //返回支持发送验证码的国家列表                    msg.arg1 = 3;                    msg.obj = "验证失败";                    handler.sendMessage(msg);                    Log.d(TAG, "验证失败");                    ((Throwable) data).printStackTrace();                }            }        };        button1.setClickable(false);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                iphone = phone.getText().toString();                if(iphone.equals("")){                    Toast.makeText(MainActivity.this,"手机号不能为空",Toast.LENGTH_SHORT).show();                }else {//填写了手机号码                    if(isMobileNO(iphone)){                        //如果手机号码无误,则发送验证请求                        button1.setClickable(true);                        changeBtnGetCode();                        getSupportedCountries();                        getVerificationCode("86", iphone);                    }else{                        //手机号格式有误                        Toast.makeText(MainActivity.this,"手机号格式错误,请检查",Toast.LENGTH_SHORT).show();                    }                }            }        });        button2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //获取 得到验证码                yan = yzm.getText().toString();                if (yan.equals("")){                    Toast.makeText(MainActivity.this,"验证码不能为空",Toast.LENGTH_SHORT).show();                }else{                    //填写了验证码,进行验证                    submitVerificationCode("86", iphone, yan);                }            }        });        SMSSDK.registerEventHandler(eh); //注册短信回调    }    public void init(){        phone = (EditText)findViewById(R.id.phone);        yzm = (EditText)findViewById(R.id.yzm);        button1 = (Button)findViewById(R.id.huoqu_btn);        button2 = (Button)findViewById(R.id.btn);    }    private void changeBtnGetCode() {        Thread thread = new Thread() {            @Override            public void run() {                if (tag) {                    while (i > 0) {                        i--;                        //如果活动为空                        if (MainActivity.this == null) {                            break;                        }                        MainActivity.this.runOnUiThread(new Runnable() {                            @Override                            public void run() {                                button1.setText("获取验证码(" + i + ")");                                button1.setClickable(false);                            }                        });                        try {                            Thread.sleep(1000);                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                    }                    tag = false;                }                i = 60;                tag = true;                if (MainActivity.this != null) {                    MainActivity.this.runOnUiThread(new Runnable() {                        @Override                        public void run() {                            button1.setText("获取验证码");                            button1.setClickable(true);                        }                    });                }            }        };        thread.start();    }    private boolean isMobileNO(String phone) {       /*    移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188    联通:130、131、132、152、155、156、185、186    电信:133、153、180、189、(1349卫通)    总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9    */        String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。        if (TextUtils.isEmpty(phone)) return false;        else return phone.matches(telRegex);    }}

END…..
加油。。。。。!

原创粉丝点击