热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android短信验证服务分享

这篇文章主要为大家详细介绍了Android短信验证服务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android短信验证服务的具体代码,供大家参考,具体内容如下

package com.skiers.demo_learn;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import com.mob.MobSDK;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class ThridActivity extends AppCompatActivity {

  EditText editText;
  TextView textView;
  EditText editText1;

  Handler handler;

  EventHandler eventHandler = null;

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_third);
    initView();
    initEvent();

  }


  private void initView() {
    MobSDK.init(this);
    editText = findViewById(R.id.editText);
    textView = findViewById(R.id.textView6);
    editText1 = findViewById(R.id.editText1);


    SMSSDK.setAskPermisionOnReadContact(false);
    eventHandler = new EventHandler() {

      public void beforeEvent(int var1, Object var2) {
        System.out.println("beforeEvent + =================================");
        System.out.println(var1);
        System.out.println(var2);

      }

      public void afterEvent(int event, int result, Object data) {
        System.out.println("afterEvent + =================================");
        // afterEvent会在子线程被调用,因此如果后续有UI相关操作,需要将数据发送到UI线程
        Message msg = new Message();
        msg.arg1 = event;
        msg.arg2 = result;
        msg.obj = data;
        getHandler().sendMessage(msg);
        System.out.println("afterEventEND + =================================");
        System.out.println(data);
      }

      public void onRegister() {
        System.out.println("onRegister + =================================");
      }

      public void onUnregister() {
        System.out.println("onUnregister + =================================");
      }

    };

    // 注册一个事件回调,用于处理SMSSDK接口请求的结果
    SMSSDK.registerEventHandler(eventHandler);

  }

  private void initEvent() {

    // 请求验证码
    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        getHandler().sendEmptyMessage(-1);
        String cOntent= editText.getText().toString();

        System.out.println(content + "----------------------------edit Text");

        // 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
        SMSSDK.getVerificationCode("86", content);
      }
    });


    // 提交验证码
    findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View v) {

        String cOntent= editText1.getText().toString();
        System.out.println(content + "----------------------------edit Text");
        // 提交验证码,其中的code表示验证码,如“1357”
        SMSSDK.submitVerificationCode("86", "18079919252", content);
      }
    });
  }


  //处理数据 验证码,手机号 ---------主线程 ----可以Handler跟新视图,数据处理类
  private Handler getHandler() {

    if (handler == null) {

      handler = new Handler(Looper.getMainLooper(), new Handler.Callback() {
        @Override
        public boolean handleMessage(Message 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) {
              System.out.println("验证码已发送,注意查收-----------------==================================");
              // TODO 处理成功得到验证码的结果
              // 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
            } else {
              System.out.println("验证码发送失败-----------------==================================");
              // TODO 处理错误的结果
              ((Throwable) data).printStackTrace();
            }
          } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
            if (result == SMSSDK.RESULT_COMPLETE) {
              System.out.println("验证码通过验证-----------------==================================");
              // TODO 处理验证码验证通过的结果
            } else {

              System.out.println("验证码未通过验证-----------------==================================");
              // TODO 处理错误的结果
              ((Throwable) data).printStackTrace();
              System.out.println("hello java ==================================");
            }
          }
          // TODO 其他接口的返回结果也类似,根据event判断当前数据属于哪个接口
          return false;
        }
      });
    }

    return handler;
  }


  // 使用完EventHandler需注销,否则可能出现内存泄漏
  protected void onDestroy() {
    super.onDestroy();
    SMSSDK.unregisterEventHandler(eventHandler);
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • Android性能优化检测App卡顿
    在移动APP性能评测-流畅度评测中,我们介绍了如何准确客观评价APP的流畅度,最终采用SM指标来评价应用的流畅度,在知道如何评价流畅度之后 ... [详细]
  • 自定义RecyclerView添加EmptyView
    你知道RecyclerView里没有Em ... [详细]
  • spotify engineering culture part 1
    原文,因为原视频说的太快太长,又没有字幕,于是借助youtube,把原文听&打出来了。中文版日后有时间再翻译。oneofthebigsucceessfactorshereatSpo ... [详细]
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • 载波|等份_NR SRS时频域位置
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了NRSRS时频域位置相关的知识,希望对你有一定的参考价值。微信同步更新欢迎关注同名modem协议笔记S ... [详细]
  • Mac下Flutter安装AndroidStudio配置
    补一个Mac下Flutter安装AndroidStudio配置(官网地址:https:flutter.devdocsget-startedinstallmacos)1.下载安装包; ... [详细]
  • vscode里的html标签导航的一系列问题
    哈喽,我今天带来的经验是,vscode在18年10月更新后的1.29以后,编辑html文档时,会发现最上面有个类似于HTML标签导航的玩意儿,可能部分同学和我一样不习惯用它们,现在 ... [详细]
  • Android Rxbus事件总线
    我的视频课程:《FFmpeg打造Android万能音频播放器》最近在项目中使用了Rxjava和RxAndroid,确实感觉挺不错的,然后听说可以用RxBus来替换 ... [详细]
  • Illustrator绘制逼真的愤怒的小鸟实例教程
    Illustrator教程: ... [详细]
  • Android 自定义控件基础 canvas paint
    1、首先说一下canvas类:ClassOverviewTheCanvasclassholdsthedrawcalls.Todrawsomething,youne ... [详细]
  • 抓取百万知乎用户设计之实体设计
    一.实体的关系实体是根据返回的Json数据来设计的教育经历方面用户可以有很多教育经理,USER和education是一对多的关系,一个education对应一个education一 ... [详细]
  • iOS之富文本
    之前做项目时遇到一个问题:使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ... [详细]
  • Xib九宫格应用管理使用xib封装一个自定义view的步骤1新建一个继承UIView的自定义view,假设类名叫做(AppView)2新建一个AppView.xib文件来描述 ... [详细]
  • 【自制小工具】代码生成器
    【自制小工具】代码生成器陆陆续续接触过好几款代码生成工具,发现确实好用,但都会有那么点不完善的地方,所以索性就自己做一个吧。界面非常简单,反正是自己用的,简单点用起来也方便上图:左 ... [详细]
  • kepserver中文手册,kepserver使用教程,kepserver设置
    下面介绍一下KepServer模拟器的使用,以下示例使用服务器随附的Simulator驱动程序来演示创建、配置和运行项目的过程。Simulator驱动程序是基于内存的驱动程序,能为 ... [详细]
author-avatar
窈窕眈眈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有