前言
基于Mob,使用AndroidStudio实现短信验证登录的博客很多人也以及写到,但是总的来说,坑很多。在进行大创作品设计的过程中,我们结合了多种资料,成功实现了短信验证的功能。
Mob平台简介:免费的短信验证平台
Mob平台给我们提供了短信验证的功能,我们需要做的只有:
1.进入Mob平台成为开发者
2.创建一个应用(注意此应用需要与自己的AndroidStudio中的工程命名一致)
3.下载sdk(新版的mob平台支持在线下载,但其中有问题,需要用新的方法解决)
4.可以浏览短信的数据。
下面就这些步骤一一讲解:
1.进入Mob平台成为开发者
Mob官网地址
(1)点击注册
(2)进行账号的注册
2.创建一个应用
下面开始创建你们自己的应用吧:注意选择Android类型即可
3.下载sdk(新版的mob平台支持在线下载,但其中有问题,需要用新的方法解决)
(1)进入sdk下载界面:还是在刚刚的界面,点击右上角的 sdk下载
(2)勾选smssdk下载,出现如下界面
之前按照这个进行操作,但是并没有用,有些函数没有。
需要进行如下步骤:
- 将下面的脚本添加到您的根模块build.gradle中,然后点击项目中的同步一下。
buildscript {
repositories {
jcenter()
}
dependencies {
// 注册MobSDK
classpath "com.mob.sdk:MobSDK:+"
}
}
- 在使用相应模块的build.gradle中,添加MobSDK插件和扩展,如:
apply plugin: 'com.mob.sdk'
MobSDK {
appKey "替换为mob官方申请的appkey"
appSecret "替换为mob官方申请的appkey对应的appSecret"
SMSSDK {}
}
界面设计:开始实现短信验证的功能:
(1)编辑界面:
(2)主界面代码(这里你们自己自己斟酌逻辑噢)
参考的文章:文章链接
package com.interfaces.interact;
import android.app.Activity;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener {
EventHandler eventHandler;
private EditText edit_phone;
private EditText edit_cord;
private TextView now;
private Button btn_getCord;
private Button btn_register;
private String phone_number;
private String cord_number;
private int time=60;
private boolean flag=true;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getId();
eventHandler = new EventHandler() {
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);
}
@Override
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterEventHandler(eventHandler);
}
/**
* 使用Handler来分发Message对象到主线程中,处理事件
*/
Handler handler=new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int event=msg.arg1;
int result=msg.arg2;
Object data=msg.obj;
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
if(result == SMSSDK.RESULT_COMPLETE) {
boolean smart = (Boolean)data;
if(smart) {
Toast.makeText(getApplicationContext(),"该手机号已经注册过,请重新输入",
Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return;
}
}
}
if(result==SMSSDK.RESULT_COMPLETE)
{
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
Toast.makeText(getApplicationContext(), "验证码输入正确",
Toast.LENGTH_LONG).show();
}
}
else
{
if(flag)
{
btn_getCord.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(),"验证码获取失败请重新获取", Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
}
else
{
Toast.makeText(getApplicationContext(),"验证码输入错误", Toast.LENGTH_LONG).show();
}
}
}
};
/**
* 获取id
*/
private void getId()
{
edit_phone=findViewById(R.id.phoneNumber);
edit_cord=findViewById(R.id.identifyCode);
btn_getCord=findViewById(R.id.getCode);
btn_register=findViewById(R.id.login);
btn_getCord.setOnClickListener(this);
btn_register.setOnClickListener(this);
}
/**
* 按钮点击事件
*/
public void onClick(View v)
{
switch (v.getId())
{
case R.id.getCode:
if(judPhone())//去掉左右空格获取字符串
{
SMSSDK.getVerificationCode("86",phone_number);
edit_cord.requestFocus();
}
break;
case R.id.login:
if(judCord())
SMSSDK.submitVerificationCode("86",phone_number,cord_number);
flag=false;
break;
default:
break;
}
}
private boolean judPhone()
{
if(TextUtils.isEmpty(edit_phone.getText().toString().trim()))
{
Toast.makeText(MainActivity.this,"请输入您的电话号码",Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return false;
}
else if(edit_phone.getText().toString().trim().length()!=11)
{
Toast.makeText(MainActivity.this,"您的电话号码位数不正确",Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return false;
}
else
{
phone_number=edit_phone.getText().toString().trim();
String num="[1][345678]\\d{9}";
if(phone_number.matches(num))
return true;
else
{
Toast.makeText(MainActivity.this,"请输入正确的手机号码",Toast.LENGTH_LONG).show();
return false;
}
}
}
private boolean judCord()
{
judPhone();
if(TextUtils.isEmpty(edit_cord.getText().toString().trim()))
{
Toast.makeText(MainActivity.this,"请输入您的验证码",Toast.LENGTH_LONG).show();
edit_cord.requestFocus();
return false;
}
else if(edit_cord.getText().toString().trim().length()!=6)
{
Toast.makeText(MainActivity.this,"您的验证码位数不正确",Toast.LENGTH_LONG).show();
edit_cord.requestFocus();
return false;
}
else
{
cord_number=edit_cord.getText().toString().trim();
return true;
}
}
}