最近需要在注册手机账号时,需要发送短信验证码,经过多款短信接口尝试,最终还是敲定了Mob的免费验证码。
由于看到现在网上的关于androidStudio实现此接口的无GUIDemo讲的不太清楚,为此我将对此进行介绍。
首先,您需要在官网获取您app的appkey和AppSecret。具体操作就不讲了,http://www.cnblogs.com/zhoujn/p/4341426.html , 大家可以参照这
个网址申请key,如果看不懂,可以看这个http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1 。
在这里下载sdk: http://www.mob.com/downloadDetail/SMS/android
官方文档:http://wiki.mob.com/android-%E7%9F%AD%E4%BF%A1sdk%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3/
如何在androidStudio中实现验证码发送呢?首先需要导入三个包,导入自己项目的libs文件夹下。如下图:
想要实现无GUI接口只需要导入上面三个包即可,这三个包的来源是上边下载sdk文件的SMSSDK文件夹中。
需要在AndroidMinifest.xml中加入:
把下面这段放到一个按钮的点击事件里,就可以发送短信了。大家要适当的替换一下代码哦。下面的appkey和appsecret填入自己在官网
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<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" />再在buld.gradle文件下,进行如下(注意:SMSSDK-2.0.1的版本不一定是2.0.1,需要和你自己下载的sdk文件中的相对应):
![]()
请的。CreateActivity.this换为自己的activity , 要注意,要
SMSSDK.initSDK(CreateAccountActivity.this, appkey , appsecret); EventHandler eh = new EventHandler() { @Override public void afterEvent(int event, int result, Object data) { Log.e(TAG , "这是回调! event = " + event + " result = " + result + " data = " + data); if (result == SMSSDK.RESULT_COMPLETE) { //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //提交验证码成功 } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { //获取验证码成功 Log.e(TAG , "获取验证码成功"); } /*下面可以把回调信息传出去,自己定义一个Handler即可。
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
handler.sendMessage(msg);*/
} else { ((Throwable) data).printStackTrace(); } } }; SMSSDK.registerEventHandler(eh); //注册短信回调 SMSSDK.getVerificationCode("86", "手机号码" ); //您要发送的手机号码(字符串形式), 86是代表中国的手机号码//发送短信后,信息会回调到上边的afterEvent()方法里边。