Mob短信验证

来源:互联网 发布:java书籍推荐 知乎 编辑:程序博客网 时间:2024/05/17 16:16

最近发现Mob短信验证还是很好用的,顺便使用了一下,记录一下使用步骤.Mob短信注册分为通过自己服务端验证和App自身验证,我这边使用的App与Mob验证.
一,As配置文件

AS版本的SMSSDK目录下包含以下内容:smssdk_as目录结构MobCommons.jar:Mob 通用公共库(必须)MobTools.jar:Mob 工具公共库(必须)SMSSDK-<version>.aar:SMSSDK 核心(必须)SMSSDKGUI-<version>.aar:SMSSDK GUI 开源库(非必须)HowToUse.txt:使用说明注意:如果你同时使用ShareSDK,保留一份公共库就行(公共库版本一致或兼容)。2.1、将以上文件按需放入Android Studio项目所要使用SMSSDK的Module所在的Libs里面:smssdk_导入as项目2.2、在Module的build.gradle里面将libs加入仓库(repositories):repositories{    flatDir{        dirs 'libs' //就是你放aar的目录地址    }}2.3、在Module的build.gradle里面添加依赖(dependencies ):dependencies {    ....//你的其他依赖    compile name:'SMSSDK-<version>',ext:'aar'    compile name:'SMSSDKGUI-<version>',ext:'aar'}最终,你的build.gradle看起来应该像这样:smssdk_as build文件三、添加代码1.配置AndroidManifest.xml1.1、添加以下权限:<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" />1.2、添加以下Activity:<activity   android:name="com.mob.tools.MobUIShell"   android:theme="@android:style/Theme.Translucent.NoTitleBar"   android:configChanges="keyboardHidden|orientation|screenSize"   android:windowSoftInputMode="stateHidden|adjustResize"/>1.3、在Application节点下添加以下属性:android:name="com.mob.MobApplication"1.4、在Application节点下添加以下meta-data:<!-- 通过AndroidManifest配置AppKey和AppSecret,如果你选择通过代码配置,则不需要配置以下meta-data --><meta-data android:name="Mob-AppKey" android:value="你的AppKey"/><meta-data android:name="Mob-AppSecret" android:value="你的AppSecret"/>最终,你的AndroidManifest.xml看起来应该像这样:smssd_manifest

二,获取验证码和检验验证码

1.1,获取验证码  SMSSDK.getVerificationCode("86", phoneNum);1.2,与MOb检验验证码是否正确  SMSSDK.submitVerificationCode("86", phoneNum, verify);

三,注册事件便于自己后续操作

1.1注册事件 SMSSDK.registerEventHandler(eh);1.2注册后处理自己事件 EventHandler eh = new EventHandler() {        public void afterEvent(int arg0, int arg1, Object arg2) {  //afterEvent 为调用SDK之后回调的方法            Message m = Message.obtain();            m.what = 1;            m.arg1 = arg0;//event            m.arg2 = arg1;//result            smsHandler.sendMessage(m);        }    };    Handler smsHandler = new Handler() {        public void handleMessage(Message msg) {            switch (msg.what) {                case 1:                    if (msg.arg2 == SMSSDK.RESULT_COMPLETE) {//发送成功的情况                        if (msg.arg1 == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {//验证成功通过                            Intent intent = new Intent(getApplicationContext(), PassWordActivity.class);                            intent.putExtra("username", phoneNum);                            startActivity(intent);                        } else if (msg.arg1 == SMSSDK.EVENT_GET_VERIFICATION_CODE) {//验证码已经从服务器发出                            ToastUtil.show(getApplicationContext(), "验证码已发出,请注意查收");                        }                    } else {                        ToastUtil.show(getApplicationContext(), "验证码错误");                    }                    break;            }        }        ;    };

四,按钮监听倒计时器

 private class MyHandler extends Handler {        private final WeakReference<RegisterActivity> weakReference;        public MyHandler(RegisterActivity activity) {            weakReference = new WeakReference<RegisterActivity>(activity);        }        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            RegisterActivity activity = weakReference.get();            if (activity != null) {                switch (msg.what) {                    case 0:                        if (msg.arg1 == 0) {                            getVerify.setText("重新获取");                            getVerify.setClickable(true);                        } else {                            getVerify.setText("重新获取(" + msg.arg1 + ")秒");                            getVerify.setClickable(false);                        }                        break;                }            }        }    }    private void sendMessageClick() {        new Thread(new Runnable() {            @Override            public void run() {                for (int i = 59; i >= 0; i--) {                    Message msg = myHandler.obtainMessage();                    msg.arg1 = i;                    myHandler.sendMessage(msg);                    try {                        Thread.sleep(1000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }).start();    }
原创粉丝点击