我们经常在一个app注册的时候需要使用到短信验证码,输入一个手机号码,点击获取验证码,手机就能收到一条短信,输入短信中的验证码就能验证成功进而进行一些操作。
最近找了一个免费的短信验证官网 虽然免费但是也有一些限制,一个手机号码最多只能收到不到10次验证码,超过10次就不发送了,这时你就要换一个手机号码去接收验证码。
好了接下来开始我们的操作吧!
短信验证:可以到Mob官网查看一下 :http://www.mob.com 里面有很多东西可以发掘一下
首先下载SMSSDK (什么系统下载什么SDK) 我的是Android的 下载的SMS SDK For Android
下载之后 找到里面的lib包
里面有jar包 和arr包 全部导入到你项目的lib包里 这个是老版本的 可以参考官方的文档 http://wiki.mob.com/sdk-sms-android-3-0-0/
然后我们要在build.gradle中添加
repositories {
flatDir {
dirs 'libs'//就是你放aar的目录地址
}
}
接下来我们还需要添加两个依赖
compile name: 'SMSSDK-2.1.2', ext: 'aar' compile name: 'SMSSDKGUI-2.1.2', ext: 'aar'
基本上算是完成了 我们再写个Application 再去Manifests清单文件中配置一下 name=".MyApplication"
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // 初始化你的Appk 和App Secret 并且在Manifests中添加name=..... SMSSDK.initSDK(this,"2487a6986bdb1","1c7283837818bb6a0cf2f73d8175881c"); } }
还需要加一些权限
<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"/>
还可以引用自定义的 放在application里面
<activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:windowSoftInputMode="stateHidden|adjustResize"/>
这样就可以开始使用了!
首先我们先设置几个Button按钮
我们看一看 自定义的
我们调用这个方法
private void opeRegisterPager() { RegisterPage registerPage = new RegisterPage(); registerPage.setRegisterCallback(new EventHandler() { public void afterEvent(int event, int result, Object data) { // 解析注册结果 if (result == SMSSDK.RESULT_COMPLETE) { @SuppressWarnings("unchecked") HashMap<String, Object> phoneMap = (HashMap<String, Object>) data; String country = (String) phoneMap.get("country"); String phone = (String) phoneMap.get("phone"); Log.d("TAG", "opeRegisterPager()--country=" + country + "--phone" + phone); } } }); registerPage.show(this); }点击就会跳到这个页面
输入我们的手机号就可以收到短信了
接着看我们自己设置的
点击获取验证码:
String phone = phone_Number.getText().toString().trim(); if (TextUtils.isEmpty(phone)) { Toast.makeText(this, "手机号码不能为空", Toast.LENGTH_SHORT).show(); } else { SMSSDK.getVerificationCode("86", phone); Toast.makeText(this, "手机号是:" + phone, Toast.LENGTH_SHORT).show(); }
手机就会收到验证码 然后输入到 输入框里 判断是否一致
String phone2 = phone_Number.getText().toString().trim(); String code = identifying_code_in.getText().toString().trim(); if (TextUtils.isEmpty(phone2) || TextUtils.isEmpty(code)) { Toast.makeText(this, "手机号和验证码均不能为空", Toast.LENGTH_SHORT).show(); SMSSDK.submitVerificationCode("+86", phone2, code); } else { Toast.makeText(this, "手机号是:" + phone2 + "验证码是:" + code, Toast.LENGTH_SHORT).show(); }
在最后我们重写这个方法
//防止内存泄漏 @Override protected void onDestroy() { super.onDestroy(); SMSSDK.unregisterEventHandler(eventHandler); }
private EventHandler eventHandler = new EventHandler() { @Override public void afterEvent(int event, int result, Object data) { super.afterEvent(event, result, data); if (result == SMSSDK.RESULT_COMPLETE) { //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //提交验证码成功 @SuppressWarnings("unchecked") HashMap<String, Object> phoneMap = (HashMap<String, Object>) data; String country = (String) phoneMap.get("country"); String phone = (String) phoneMap.get("phone"); Log.d("TAG", "提交验证码成功--country=" + country + "--phone" + phone); } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { //获取验证码成功 Log.d("TAG", "获取验证码成功"); } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) { //返回支持发送验证码的国家列表 } } else { ((Throwable) data).printStackTrace(); } } };
可以去Github上查看我的Demo:https://github.com/chenaihui/SMSDemo