在ShareSDK官网http://mob.com/注册并创建Android应用.申请APP_key,下载SDK等

根据官网开发文档导入SDK,目录结构如下

将以上文件按需放入Android Studio项目所要使用SMSSDK的Module所在的Libs里面,再在Module的build.gradle里面将libs加入仓库(repositories),
然后添加依赖(dependencies )示例如下:

repositories{flatDir{dirs 'libs' //就是你放aar的目录地址}
}
dependencies {....//你的其他依赖compile name:'SMSSDK-<version>',ext:'aar'compile name:'SMSSDKGUI-<version>',ext:'aar'
}

添加权限:

   <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:

 <activityandroid:name="com.mob.tools.MobUIShell"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:windowSoftInputMode="stateHidden|adjustResize"/>

代码实现:

初始化工作:

SMSSDK.initSDK(this, "您的appkey", "您的appsecret");

如果使用默认的短信注册页面可以用以下代码实现:

//打开默认注册页面
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"); // 提交用户信息(此方法可以不调用)registerUser(country, phone);}}
});
registerPage.show(context);

自定义UI实现手机注册短信验证:

package com.loaderman.smssdkdemo;import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;import java.util.HashMap;import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;public class MainActivity extends AppCompatActivity {private EditText       et_number;private String         number;private EditText       et_security;private ProgressDialog dialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//SMSSDK.initSDK(this, "您的appkey", "您的appsecret");//初始化工作,建议放在自己的Application的onCreate方法中SMSSDK.initSDK(this, "1beb22f8862dc", "df387854c513ca138cd23d53cf33cec3");et_number = (EditText) findViewById(R.id.et_phone);et_security = (EditText) findViewById(R.id.et_security);//注册短信回调监听SMSSDK.registerEventHandler(ev); }/*** 短信验证的回调监听*/private EventHandler ev = new EventHandler() {@Overridepublic void afterEvent(int event, int result, Object data) {if (result == SMSSDK.RESULT_COMPLETE) { //回调完成//提交验证码成功,如果验证成功会在data里返回数据。data数据类型为HashMap<number,code>if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {Log.e("TAG", "提交验证码成功" + data.toString());HashMap<String, Object> mData = (HashMap<String, Object>) data;String country = (String) mData.get("country");//返回的国家编号String phone = (String) mData.get("phone");//返回用户注册的手机号Log.e("TAG", country + "====" + phone);if (phone.equals(number)) {runOnUiThread(new Runnable() {//更改ui的操作要放在主线程,实际可以发送hander@Overridepublic void run() {showDailog("恭喜你!通过验证");dialog.dismiss();//    Toast.makeText(MainActivity.this, "通过验证", Toast.LENGTH_SHORT).show();}});} else {runOnUiThread(new Runnable() {@Overridepublic void run() {showDailog("验证失败");dialog.dismiss();//     Toast.makeText(MainActivity.this, "验证失败", Toast.LENGTH_SHORT).show();}});}} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {//获取验证码成功Log.e("TAG", "获取验证码成功");} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {//返回支持发送验证码的国家列表}} else {((Throwable) data).printStackTrace();}}};//验证结果弹窗private void showDailog(String text) {new AlertDialog.Builder(this).setTitle(text).setPositiveButton("确定", null).show();}/*** 获取验证码* @param v*/public void getSecurity(View v) {number = et_number.getText().toString().trim();//发送短信,传入国家号和电话---使用SMSSDK核心类之前一定要在MyApplication中初始化,否侧不能使用if (TextUtils.isEmpty(number)) {Toast.makeText(this, "号码不能为空!", Toast.LENGTH_SHORT).show();} else {SMSSDK.getVerificationCode("+86", number);Toast.makeText(this, "发送成功:" + number, Toast.LENGTH_SHORT).show();}}/*** 向服务器提交验证码,在监听回调中判断是否通过验证* @param v*/public void testSecurity(View v) {String security = et_security.getText().toString();if (!TextUtils.isEmpty(security)) {dialog = ProgressDialog.show(this, null, "正在验证...", false, true);//提交短信验证码SMSSDK.submitVerificationCode("+86", number, security);//国家号,手机号码,验证码Toast.makeText(this, "提交了注册信息:" + number, Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "验证码不能为空", Toast.LENGTH_SHORT).show();}}@Overrideprotected void onDestroy() {super.onDestroy();//要在activity销毁时反注册,否侧会造成内存泄漏问题SMSSDK.unregisterAllEventHandler();}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="10dp"tools:context="com.loaderman.smssdkdemo.MainActivity"><EditTextandroid:id="@+id/et_phone"android:background="#ccc"android:hint="请输入手机号码"android:inputType="phone"android:padding="5dp"android:layout_width="match_parent"android:layout_height="wrap_content"/><EditTextandroid:id="@+id/et_security"android:layout_marginTop="10dp"android:background="#ccc"android:hint="请输入短信验证码"android:inputType="phone"android:padding="5dp"android:layout_width="match_parent"android:layout_height="wrap_content"/><Buttonandroid:onClick="getSecurity"android:id="@+id/btn_get"android:layout_width="match_parent"android:text="获取验证码"android:layout_height="wrap_content"/><Buttonandroid:onClick="testSecurity"android:id="@+id/btn_register"android:layout_width="match_parent"android:text="注册"android:layout_height="wrap_content"/>
</LinearLayout>

效果图:

转载于:https://www.cnblogs.com/loaderman/p/6520382.html

sharesdk短信验证码的集成相关推荐

  1. 极光短信验证码的集成过程

    1.注册极光短信验证码的账号 2.JPush的集成步骤: (1)下载SDK,里面有这些内容 [图片] (2)将jar包拷贝到项目的libs目录下,并进行拷贝一个build.grade文件 (3)进行在 ...

  2. Android-Studio 用ShareSDK集成社会化分享,短信验证码,视频录制功能

    ShareSDK主要用于qq.qq空间.微信.微信朋友圈的分享功能以及第三方登录功能 SMSSDK主要用于短信验证码 集成工作:将sharesdk与smssdk同时集成到android-studio项 ...

  3. 免费短信验证码SDK是一款由移动开发服务平台Mob(前身ShareSDK)正式推出“全球短信验证码解决方案”

    免费短信验证码SDK是一款由移动开发服务平台Mob(前身ShareSDK)正式推出"全球短信验证码解决方案",正式面向开发者免费开放.方案是为开发者提供全球通用短信验证码工具,开发 ...

  4. 快速集成APP注册页面免费获取短信验证码功能

    前言: 最近这段时间都忙着优化自己的个人项目,好久没来总结分享了,今天就抽空跟大家分享一下快速集成APP注册页面免费获取短信验证码功能吧. 一.使用第三方短信SDK前期准备: 在这里我是使用了第三方免 ...

  5. iOS开发——App集成短信验证码

    无论是在网页上还是在客户端,每当我们进行注册的时候,往往会进行短信或者邮箱验证,这是一种不错的安全机制.对于用户体验来说,如果是在PC的网页上,用邮箱或者短信验证都比较方便:如果是在手机上,那么使用短 ...

  6. 手把手带你在集成SpringSecurity的SpringBoot应用中添加短信验证码登录认证功能

    本文目录 前言 1 自定义AuthenticationToken类 2 自定义AuthenticationProvider类 3 自定义MobilePhoneAuthenticationFilter ...

  7. android_app开发集成mob短信验证码功能

    一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务 ...

  8. Spring Security OAuth2 优雅的集成短信验证码登录以及第三方登录

    基于SpringCloud做微服务架构分布式系统时,OAuth2.0作为认证的业内标准,Spring Security OAuth2也提供了全套的解决方案来支持在Spring Cloud/Spring ...

  9. 集成短信验证码--Mob.com

    集成短信验证码–Mob.com ONE Goal,ONE Passion ! 现在大多数app 在注册时会使用手机号直接注册,这样到挺方便的.不过对开发者来说就要去集成一些短信验证的sdk了.用的比较 ...

最新文章

  1. 一些开源搜索引擎实现——倒排使用原始文件,列存储Hbase,KV store如levelDB、mongoDB、redis,以及SQL的,如sqlite或者xxSQL...
  2. python3爬虫实例-Python3 爬虫实例(一)-- 简单网页抓取
  3. dofuscator C# 混淆器 原来如此
  4. Spark知识体系完整解读
  5. 分布式系统概念 | 一致性协议:拜占庭将军问题、Paxos、Raft
  6. android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片
  7. php签名墙,肺功能检查质量控制网
  8. linux内核中分配4M以上大内存的方法
  9. 几个重要库函数的实现
  10. 再问数据中台 - 数据中台里的数据质量应该如何保障?
  11. 根据当前日期返回星期数
  12. 将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程
  13. 深度学习自学(十九):caffe添加深度可分离卷积
  14. oracle 10g在线重定义新特性——关联对象自动重命名(二)
  15. ubuntu 安装qq
  16. 3D建模系统blender快捷键
  17. 数据可视化技术:python数据可视化工具库汇总(共21个)
  18. html label 背景图片,Qt添加窗口背景图片、Label图片显示、、Label文字显示
  19. 今天我们谈谈关于java自学的那些事儿(为那些目标模糊的码农们)
  20. Excel和Python实现梯度下降法

热门文章

  1. php mysql刷新表格_php读入mysql数据并以表格形式显示(表单实现无刷新提交)
  2. 框架下载_25. Scrapy 框架-下载中间件Middleware
  3. pipeline python,Python-什么是sklearn.pipeline.Pipeline?
  4. python实现lenet_吴裕雄 python 神经网络TensorFlow实现LeNet模型处理手写数字识别MNIST数据集...
  5. C语言程序main入口函数
  6. C语言面试-指针和引用的使用场景?
  7. html字符串转svg,【SVG】如何操作SVG Text
  8. ci 地址去掉index.php,CI框架如何删除地址栏的 index.php
  9. NS3官方参考资料manual和tutorial
  10. 使用eclipse调试ns3配置说明