close
当前位置: 物联网在线 > 技术文库 > android >

Android Studio Mob快速集成短信验证(图文教程)

现在APP应用都是需要通过手机获取短信验证码来注册应用或是实现其它功能 。而利用短信验证码来注册会员,大大降低了非法注册,很大程度上提高了用户账户的安全性,同时避免一些黑名单用户的骚扰。目前市面上已经有了很多提供短信验证的服务商,有收费的,也有免费的。而我们作为个人开发者或者公司为了节约成本,就需要用到下面介绍的一个免费的短信验证平台---

Mob平台的优点,这里我们就不再多说,直接开始看教程如何使用。

1.注册开发者( )

只有注册了用户,才可以创建应用,使用第Mob平台提供的短信验证工具。(已有账号这步可以省略)

2.登录官网首页

点击右侧头像栏那里,选择进入后台

Android Studio Mob快速集成短信验证(图文教程)

3.选择SecurityCodeSDK

立即使用并创建名为MobSmsDemo的Android应用

Android Studio Mob快速集成短信验证(图文教程)

Android Studio Mob快速集成短信验证(图文教程)

4.进入SecurityCodeSDK后台

获取创建应用成功后的APP Key和 APP Secret

Android Studio Mob快速集成短信验证(图文教程)

5.回到首页下载 SMS For Android短信验证码SDK

Android Studio Mob快速集成短信验证(图文教程)

Android Studio Mob快速集成短信验证(图文教程)

6.下载完成后得到的是一个压缩包,解压缩,打开SMSSDK这个文件夹

Android Studio Mob快速集成短信验证(图文教程)

7.HowToUse.txt文档是Mob平台提供给我们需要注意的两个地方点,这里简要看过一遍

Android Studio Mob快速集成短信验证(图文教程)

8.在这里我们不需要用GUI库,所以把除了SMSSDKGUI-2.1.2.aar其他三个文件拷贝到项目中,放在Module所在的Libs里面,在build.gradle中进行配置添加依赖

Android Studio Mob快速集成短信验证(图文教程)

9.在AndroidManifest.xml配置相应的权限,然后在“application”下添加如下activity

<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" android:windowSoftInputMode="stateHidden|adjustResize"/>

10.使用上面获取到的APP Key和 APP Secret,初始化SDK

//initSDK方法是短信SDK的入口,需要传递您从MOB应用管理后台中注册的SMSSDK的应用AppKey和AppSecrete,如果填写错误,后续的操作都将不能进行 SMSSDK.initSDK(MainActivity.this, "196e511258800", "ba98d7e9aa85eaa323cb4dc60435fd16");

11.registerEventHandler是用来往SMSSDK中注册一个事件接收器。

EventHandler eventHandler = new EventHandler() { @Override public void afterEvent(int event, int result, Object data) { Message msg = new Message(); msg.arg1 = event; msg.arg2 = result; msg.obj = data; handler.sendMessage(msg); } }; SMSSDK.registerEventHandler(eventHandler);

12.由于EventHandler开启了线程,不能直接在afterEvent中更新UI,所以还需要在MainActivity当中定义一个Handler来接受EventHandler发送过来的消息。

Handler handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == -1) { //修改控件文本进行倒计时 i 以60秒倒计时为例 btnSendMsg.setText( i+" s"); } else if (msg.what == -2) { //修改控件文本,进行重新发送验证码 btnSendMsg.setText("重新发送"); btnSendMsg.setClickable(true); i = 60; } else { int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; // 短信注册成功后,返回MainActivity,然后提示 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { // 提交验证码成功,调用注册接口,之后直接登录 //当号码来自短信注册页面时调用登录注册接口 //当号码来自绑定页面时调用绑定手机号码接口 } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { Toast.makeText(getApplicationContext(), "验证码已经发送", Toast.LENGTH_SHORT).show(); } else { ((Throwable) data).printStackTrace(); } } else if (result == SMSSDK.RESULT_ERROR) { try { Throwable throwable = (Throwable) data; throwable.printStackTrace(); JSONObject object = new JSONObject(throwable.getMessage()); String des = object.optString("detail");//错误描述 int status = object.optInt("status");//错误代码 if (status > 0 && !TextUtils.isEmpty(des)) { Toast.makeText(MainActivity.this, des, Toast.LENGTH_SHORT).show(); return; } } catch (Exception e) { //do something } } } } };
(责任编辑:ioter)

用户喜欢...

Android Weekly #276 安卓开发周刊 中文版

您是否了解过Android的Lifecycle-Aware库?(android.jlelse.eu) 我们如何了解Lifecycle-Aware库代码? Nishant Srivastava展示了可以跟踪活动或Lifecycle-Aware的Lifecycle Arch组件的片段,并相应地调整其行为。 为Mos...


Android Weekly #275 安卓开发周刊 中文版

MapMe — Android地图适配器 (medium.com) Josh Burton介绍MapMe,是一个用Kotlin编写的Android库,可以将适配器模式带到地图上。 赞助 CloudRail - 连接到API 10x更快 (cloudrail.com) 当我们用单一的界面连接到所...


使用Android Studio开发可独立运行(runnable)混淆过的Jar程序

之前开发Java程序一直都是使用Eclipse 开发Jar程序,现在开发基本上都已经弃用Eclipse了,但是有时偶尔开发个小的Jar程序,还要切换回去好麻烦,刚好前几天有人问几个相关的问题,就顺便整...


Android Weekly #274 安卓开发周刊 中文版

探索Android Oreo上的别后执行限制(medium.com) 在这篇文章中,Joe Birch解释了关于Android Oreo在后台运行服务的变化。 non-Time领主的time – 第5部分 (blog.stylingandroid.com) Mark Allison继续分析JSR 310 date和...


Android Weekly #273 安卓开发周刊 中文版

开源你的Android代码(android.jlelse.eu) 通过您的开源Android代码,您将(希望地)为Android社区提供有价值的代码,收到建设性的反馈,并与您最初建立的内容进行协作从而使您的代码变得更好。这...


Android Weekly #272 安卓开发周刊 中文版

Android Dev 101:每个初学者都应该知道的一些做法() 看一些初学者或媒介等级开发人员(不要错过任何人)应该知道的一些做法,以便更好地摆脱Android框架。 99.9% crash free sessions (medium.com) Chr...


Android Weekly #271 安卓开发周刊 中文版

依赖注入检查(medium.com) 在本文中,MihályNagy引入了依赖注入检查,一种开源注释处理器,可帮助您解决一些出现在所有JSR 330 DI库中常见的问题。 使用Android Studio插件提高效率 (blog.mindorks.com...


Android Weekly #270 安卓开发周刊 中文版

带有RxJava2的SOLID Android分析 (medium.com) 在这篇文章中,Aris Papadopoulos将解释如何正确创建一个分析系统,同时遵循SOLID原则,并使用RxJava2来解决问题。 (blog.stylingandroid.com) Java中的编程时间很难...


Android内存泄漏思考

Android内存泄漏是一个经常要遇到的问题,程序在内存泄漏的时候很容易导致OOM的发生。那么如何查找内存泄漏和避免内存泄漏就是需要知晓的一个问题,首先我们需要知道一些基础知识。...


Android Weekly #269 安卓开发周刊 中文版

在Google上快速提出操作 () Wolfram Rittmeyer分享了开始在Google上快速创建操作所需的所有信息(为了家庭与助理)。 RxJava中的错误处理(rongi.github.io) 一旦开始编写RxJava代码,你就会意识到有些事...