二、短信验证(使用ShareSDk无Gui接口)

使用的shareSdk
首先,可定是先注册,然后创建应用获取到appkey 和 secret

界面我们自己定义,可以参考sharesdk的相关文档
http://wiki.mob.com/sms-android-%E6%97%A0gui%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8/

第一步:先把sdk中的所需要使用的包拿过来。


二、短信验证(使用ShareSDk无Gui接口)_第1张图片
Paste_Image.png

第二步:添加依赖
第三步:在AndroidManifest.xml文件中添加权限


在application标签中添加固定格式的代码,不要修改


二、短信验证(使用ShareSDk无Gui接口)_第2张图片
Paste_Image.png

布局文件:

        

主程序代码:

package com.johnwharton.sendsmsnogui;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.view.View;import android.widget.EditText;import android.widget.Toast;import java.util.HashMap;import java.util.regex.Matcher;import java.util.regex.Pattern;import cn.smssdk.EventHandler;import cn.smssdk.SMSSDK;public class MainActivity extends AppCompatActivity {    private EditText et_main;    private EditText et_show;    private Context mContext = this;    private String phone = "";    private static final int  SUBMIT= 0;    private static final int  GET= 1;    private static final int  COUNTRIES= 2;    private EventHandler eh;    private Handler mHandler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case SUBMIT:                    DefineToast("注册成功");                    break;                case GET:                    DefineToast("获取验证码成功");                    break;                case COUNTRIES:                    //获取国家列表与电话号码                    Bundle bundle = (Bundle) msg.obj;                    DefineToast(bundle.getString("country") + "___" + bundle.getString("phone"));                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    /**     * initSDK方法是短信SDK的入口,需要传递您从ShareSDK应用管理后台中注册的应用AppKey和AppSecrete,如果填写错误,后续的操作都将不能进行。     */    private void initView() {        et_main = (EditText) findViewById(R.id.et_main);        et_show = (EditText) findViewById(R.id.et_show);        SMSSDK.initSDK(mContext,"16868d56de3ff","8e555367d52192d92319a90cfc4bc608");        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) {                        //提交验证码成功                        mHandler.sendEmptyMessage(0);                    }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){                        //获取验证码成功                        mHandler.sendEmptyMessage(1);                    }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){                        //返回支持发送验证码的国家列表                        @SuppressWarnings("unchecked")                        HashMap phoneMap = (HashMap) data;                        String country = (String) phoneMap.get("country");                        String phone = (String) phoneMap.get("phone");                        Bundle bundle = new Bundle();                        bundle.putString("country",country);                        bundle.putString("phone",phone);                        Message msg = Message.obtain();                        msg.obj = bundle;                        msg.what = 2;                        mHandler.sendMessage(msg);                    }                }else{                    ((Throwable)data).printStackTrace();                }            }        };        SMSSDK.registerEventHandler(eh); //注册短信回调    }    public void clickView(View view) {        switch (view.getId()){            case R.id.btn_get_sms_code:                String string = et_main.getText() + "";                //如果是电话号码,就设置到电话中                if (isMatchMobilLength(string,11) && isMobilNo(string)){                    //发送成功后,回调EventHandler 的afterEvent方法(event == SMSSDK.EVENT_GET_VERIFICATION_CODE)。                    //获取验证码                    SMSSDK.getVerificationCode("86", string);                }else {                    Toast.makeText(mContext,"输入电话号码有误",Toast.LENGTH_SHORT).show();                }                break;            case R.id.btn_sign:                String show = et_show.getText() + "";                if (!TextUtils.isEmpty(show)){//                    验证成功后,回调EventHandler 的afterEvent方法(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)。                    SMSSDK.submitVerificationCode("86",phone,show);                }                break;        }    }    public boolean isMatchMobilLength(String phone,int length){        if (!TextUtils.isEmpty(phone)){            return phone.length() == length;        }        return false;    }    public boolean isMobilNo(String phone){        String repexp = "[1][358]\\d{9}";        Pattern pattern = Pattern.compile(repexp);        Matcher matcher = pattern.matcher(phone);        return matcher.matches();    }    public void DefineToast(String str){        Toast.makeText(mContext,str,Toast.LENGTH_SHORT).show();    }}

你可能感兴趣的:(二、短信验证(使用ShareSDk无Gui接口))