AndroidStudio——基于Mob短信验证码登录(新版)

前言

基于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;
        }

    }


}

发布了28 篇原创文章 · 获赞 4 · 访问量 5403

猜你喜欢

转载自blog.csdn.net/Program_dancing/article/details/102771519