Android笔记(五十一) 短信验证码集成——mob平台
官方网站:www.mob.com
注册帐号,下载SDK,导入SDK就不说了,主要写一下简单集成如何使用,以后忘记了也可以翻着看看。
详细的可以参考官方文档:
http://wiki.mob.com/android-%E7%9F%AD%E4%BF%A1sdk%E6%93%8D%E4%BD%9C%E5%9B%9E%E8%B0%83/
http://wiki.mob.com/sms-android-%E6%97%A0gui%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8/
步骤大致可以分为:
看代码:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.lixyz.records"
android:versionCode="1"
android:versionName="1.0" > <uses-permission android:name="android.permission.INTERNET" />
<!-- 为SMSDK添加的权限 -->
<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.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="cn.lixyz.records.activity.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="cn.lixyz.records.activity.RegisterActivity" />
<activity android:name="cn.lixyz.records.activity.IndexActivity" />
<activity
android:name="com.mob.tools.MobUIShell"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" />
</application> </manifest>
RegisterActivity.java
package cn.lixyz.records.activity; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import cn.lixyz.records.R;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK; public class RegisterActivity extends Activity implements OnClickListener { private Button bt_reg_getauthcode, bt_reg_sumbit;
private EditText et_reg_phone, et_reg_authcode, et_reg_password, et_reg_againpass; // 用于发送message,表示更改按钮上的倒计时
public static final int CHANGE_TIME = 100;
// 用户发送message,表示可以重新获取验证码
public static final int AGAIN_GET_AUTHCODE = 200; int i = 30; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register); initView(); SMSSDK.initSDK(this, "xxxxxxxxx", "xxxxxxxxxxxxxxxx"); 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); bt_reg_getauthcode.setOnClickListener(this);
bt_reg_sumbit.setOnClickListener(this);
} private void initView() {
bt_reg_getauthcode = (Button) findViewById(R.id.bt_reg_getauthcode);
bt_reg_sumbit = (Button) findViewById(R.id.bt_reg_sumbit);
et_reg_phone = (EditText) findViewById(R.id.et_reg_phone);
et_reg_authcode = (EditText) findViewById(R.id.et_reg_authcode);
et_reg_password = (EditText) findViewById(R.id.et_reg_password);
et_reg_againpass = (EditText) findViewById(R.id.et_reg_againpass);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_reg_getauthcode:
sendAuthCode();
break; case R.id.bt_reg_sumbit:
registe();
break;
}
} // 注册方法
private void registe() {
String inputAuthCode = et_reg_authcode.getText().toString();
String password = et_reg_password.getText().toString();
String str = et_reg_againpass.getText().toString();
if (str.equals(password)) {
SMSSDK.submitVerificationCode("86", et_reg_phone.getText().toString(), inputAuthCode);
} else {
Toast.makeText(getApplicationContext(), "您的密码输入不一致", Toast.LENGTH_SHORT).show();
}
} // 发送验证码
private void sendAuthCode() {
// 获取用户输入的手机号
String phoneNumber = et_reg_phone.getText().toString();
// 请求获取验证码
SMSSDK.getVerificationCode("86", phoneNumber);
// 将获取验证码按钮设置为不可点击
bt_reg_getauthcode.setClickable(false);
// bt_reg_getauthcode.setText("重新发送(" + i + ")");
new Thread(new Runnable() {
@Override
public void run() {
// 循环30秒,用于更新按钮上的倒计时
for (; i > 0; i--) {
handler.sendEmptyMessage(CHANGE_TIME);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 30秒完成,可以重新获取验证码
handler.sendEmptyMessage(AGAIN_GET_AUTHCODE);
}
}).start(); } Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == CHANGE_TIME) {
bt_reg_getauthcode.setText("重新发送(" + i + ")");
} else if (msg.what == AGAIN_GET_AUTHCODE) {
bt_reg_getauthcode.setClickable(true);
bt_reg_getauthcode.setText("获取验证码");
i = 30;
} else {
int event = msg.arg1;
int result = msg.arg2;
Object data = msg.obj;
Log.d("TTTT", "event=" + event + ",result=" + result);
// 如果等于-1,表示事件执行成功
if (result == -1) {
if (event == 3) {
Toast.makeText(getApplicationContext(), "提交验证码成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
startActivity(intent);
} else if (event == 2) {
Toast.makeText(getApplicationContext(), "验证码已经发送", Toast.LENGTH_SHORT).show();
}
} else if (result == 0) {
if (event == 3) {
Toast.makeText(getApplicationContext(), "验证码错误,请检查", Toast.LENGTH_SHORT).show();
}
}
}
};
}; protected void onDestroy() {
SMSSDK.unregisterAllEventHandler();
};
}
activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal" > <EditText
android:id="@+id/et_reg_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:hint="输入您的手机号" /> <Button
android:id="@+id/bt_reg_getauthcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="获取验证码" />
</LinearLayout> <EditText
android:id="@+id/et_reg_authcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入您收到的验证码" /> <EditText
android:id="@+id/et_reg_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="请输入您的密码"
android:password="true" /> <EditText
android:id="@+id/et_reg_againpass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="重复您的密码"
android:password="true" /> <Button
android:id="@+id/bt_reg_sumbit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="注 册" /> </LinearLayout>
Android笔记(五十一) 短信验证码集成——mob平台的更多相关文章
- 转载:Android自动化测试- 自动获取短信验证码
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android ...
- ShareSDK短信验证码集成详细步骤
1.这里使用的是ShareSDK网的短信验证码SDK 官网 http://www.mob.com 先去http://www.mob.com/#/reg 注册成为开发者 填写相应的信息,邮箱账号,然后 ...
- Android学习笔记之短信验证码的获取和读取
PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...
- sharesdk短信验证码的集成
在ShareSDK官网http://mob.com/注册并创建Android应用.申请APP_key,下载SDK等 根据官网开发文档导入SDK,目录结构如下 将以上文件按需放入Android Stud ...
- Android Studio精彩案例(五)《JSMS短信验证码功能实现》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 很多应用刚打开的时候,让我们输入手机号,通过短信验证码来登录该应用.那么,这个场景是怎么实现的呢?其实是很多开放平台提供了短信验证功能 ...
- SpringBoot + Spring Security 学习笔记(五)实现短信验证码+登录功能
在 Spring Security 中基于表单的认证模式,默认就是密码帐号登录认证,那么对于短信验证码+登录的方式,Spring Security 没有现成的接口可以使用,所以需要自己的封装一个类似的 ...
- Android之短信验证码
我们今天所使用的方案仅仅是android手机设备集成短信验证码功能的方案之中的一个. 我们所採用的方案是使用聚合数据的短信验证sdk. 程序的界面例如以下所看到的: 实现步骤: 1.到聚合数据官网上申 ...
- Android开发之短信验证码示例
在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融 ...
- Android获取短信验证码
Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发 ...
随机推荐
- 解决electron-vue中无法Element的Tooltip组件
打开文件:electron-vue/webpack.renderer.config.js 在大约21行左右找到 let whiteListedModules 将element-ui添加进去,最终如下所 ...
- pycharm使用(持续更新)
1.Anaconda版本下载 https://repo.continuum.io/archive/
- js的style.width取不到元素的宽度值
使用jquery的.width()方法获取一个元素的当前宽度,不管元素是否设置了宽度,css样式时内联 外联或者是内嵌,都可以使用 这个方法获取元素的宽度. 使用原生js style.width .w ...
- Kubernetes 配置管理 ConfigMap(十二)
目录 一.背景 二.创建 ConfigMap 2.1.通过 --from-literal 2.2.通过 --from-file 2.3.通过--from-env-file 2.4.YAML 配置文件 ...
- vue-cli3 配置跨域并通axios进行数据请求
在项目根目录下创建vue.config.js文件,配置信息: module.exports = { devServer: { proxy: { '/api': { target: 'http://19 ...
- 【剑指offer】面试题 20. 表示数值的字符串
面试题 20. 表示数值的字符串
- K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署
Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为q ...
- Jenkins+Git+Maven+Tomcat详细安装步骤
jenkins安装 jenkins的war包安装 以下war包的安装是直接使用war包内嵌的页面访问,也可以将war包放到tomcat的webapps下通过tomcat访问,在下面的tomcat步骤有 ...
- Django中的admin
1.基本知识 在用Django框架写了一个网站之后,我们添加数据大概有两种方式: 1.在连接的数据库中添加数据 2.登录admin,进入后台添加数据 创建一个Django项目后,我们在url.py中会 ...
- python基础 — 局部变量/全局变量
变量作用区域 变量器作用的额代码范围称为变量的作用与,不同作用区域之间互不影响,函数每部定义的变量一般为局部变量,而不属于任何函数的变量一般为全局变量.所以我们在这里按变量的作用区域分为两类,全局变量 ...