Android Studio 基于mob平台提供的SMSSDK实现注册后绑定手机号的学习笔记

将mob提供的SMSSDK导入到AS中

首先在mob官网中注册自己的账号,申请一个app,获得APP Key和APP Secret

然后在个人主页下找到SDK下载,下载SMSSDK


现在的版本支持在线安装,免下载SDK,根据官网的提示在AS的gradle中添加相应内容

代码段1

buildscript {repositories {google()jcenter()//免下载SMSSDKmaven {url "http://mvn.mob.com/android"}}dependencies {classpath 'com.android.tools.build:gradle:3.5.2'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files//注册MobSDKclasspath "com.mob.sdk:MobSDK:+"}
}

代码段2

apply plugin: 'com.mob.sdk' //在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK{appKey"34bf745dc9fcd"appSecret"e8e806ee2a1be37b461fe7cde171c60d"SMSSDK{}
}

appkey以及appsecret在申请app后会自动生成
在工作台-开发者平台-应用概览中可以找到

实现代码段

逻辑代码

package com.example.dailyreading;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AlertDialog;
import android.os.Bundle;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.mob.MobSDK;              //mob
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;            //mobpublic class textphone extends AppCompatActivity {private TimerTask timerTask;private Timer timer;private EditText phone_enter;private EditText text_enter;private Button text_get;private Button commit;private int TIME = 60;//倒计时60spublic String country = "86";//中国区号private String phone;private static final int CODE_REPEAT = 1;//重新发送public TextView tv_back;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_textphone);MobSDK.init(this, "34bf745dc9fcd", "e8e806ee2a1be37b461fe7cde171c60d");    //mob,参数为appkey和appsecretSMSSDK.registerEventHandler(eh);//注册短信回调(记得销毁,避免泄露内存)initView();}//处理获取验证码Handler hd = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == CODE_REPEAT) {text_get.setEnabled(true);commit.setEnabled(true);timer.cancel();timerTask.cancel();TIME = 60;text_get.setText("重新获取验证码");} else {text_get.setText(TIME + "重新获取验证码");}}};Handler submithd=new Handler(){@Overridepublic void handleMessage(Message msg){super.handleMessage(msg);int event = msg.arg1;int result=msg.arg2;Object data=msg.obj;if (result == SMSSDK.RESULT_COMPLETE) {if(event==SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){Toast.makeText(textphone.this, "验证码输入正确", Toast.LENGTH_LONG).show();startActivity(new Intent(textphone.this,login.class));}else {Toast.makeText(textphone.this, "验证码输入刺配", Toast.LENGTH_LONG).show();}}}};//回调,这里是子线程,需要传到主线程中去操作EventHandler eh = new EventHandler() {@Overridepublic void afterEvent(int event, int result, Object data) {Message msg = new Message();msg.arg1 = event;msg.arg2 = result;msg.obj = data;submithd.sendMessage(msg);}};private void initView() {tv_back=findViewById(R.id.tv_back);tv_back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent(textphone.this,login.class);startActivity(intent);}});text_enter = findViewById(R.id.text_enter);phone_enter = findViewById(R.id.phone_enter);text_get = findViewById(R.id.text_get);commit = findViewById(R.id.commit);text_get.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {phone=phone_enter.getText().toString().trim().replaceAll("/s","");if(!TextUtils.isEmpty(phone)){//定义需要匹配的正则表达式的规则String REGEX_MOBILE_SIMPLE =  "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";//把正则表达式的规则编译成模板Pattern pattern = Pattern.compile(REGEX_MOBILE_SIMPLE);//把需要匹配的字符给模板匹配,获得匹配器Matcher matcher=pattern.matcher(phone);//通过匹配器查找是否有该字符,不可重复调用matcher.findif(matcher.find()){alterWarning();}else {Toast.makeText(textphone.this, "手机号格式错误", Toast.LENGTH_LONG).show();}}else {Toast.makeText(textphone.this, "请先输入手机号", Toast.LENGTH_LONG).show();}}});commit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String code=text_enter.getText().toString().replaceAll("/s","");phone=phone_enter.getText().toString().trim().replaceAll("/s","");if(TextUtils.isEmpty(code)){Toast.makeText(textphone.this,"验证码为空",Toast.LENGTH_LONG).show();return;}else if(phone.length()==0&code.length()!=0){Toast.makeText(textphone.this,"请输入手机号",Toast.LENGTH_LONG).show();return;}else if(phone.length()==0&code.length()==0){Toast.makeText(textphone.this,"请输入完整信息",Toast.LENGTH_LONG).show();return;}SMSSDK.submitVerificationCode(country,phone,code);}});}private void alterWarning(){AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setTitle("短信验证");builder.setMessage("我们将发送验证短信到"+phone+"进行验证");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {dialogInterface.dismiss();//关闭dialogSMSSDK.getVerificationCode(country,phone);//发送短信验证码Toast.makeText(textphone.this,"已发送"+i,Toast.LENGTH_LONG).show();text_get.setEnabled(false);//获取验证码按钮设置不可点击commit.setEnabled(true);//提交按钮可点击timer=new Timer();timerTask=new TimerTask() {@Overridepublic void run() {hd.sendEmptyMessage(TIME--);}};timer.schedule(timerTask,0,1000);}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {dialogInterface.dismiss();Toast.makeText(textphone.this,"已取消"+i,Toast.LENGTH_LONG).show();}});builder.create().show();//创建并展示}//销毁短信注册@Overrideprotected void onDestroy() {super.onDestroy();// 注销回调接口registerEventHandler必须和unregisterEventHandler配套使用,否则可能造成内存泄漏。SMSSDK.unregisterEventHandler(eh);}}

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".textphone"><include layout="@layout/title_bar"></include><EditTextandroid:layout_width="match_parent"android:layout_height="40dp"android:id="@+id/phone_enter"android:layout_marginRight="48dp"android:layout_marginLeft="48dp"android:layout_marginTop="58dp"android:hint="请输入手机号码"></EditText><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/text_enter"android:layout_width="200dp"android:layout_height="40dp"android:layout_marginLeft="48dp"android:layout_marginTop="58dp"android:layout_marginRight="48dp"android:hint="请输入验证码"></EditText><Buttonandroid:id="@+id/text_get"android:layout_width="100dp"android:layout_height="58dp"android:layout_marginTop="58dp"android:text="获取验证码"android:textSize="15sp"android:textColor="@color/smssdk_black"/></LinearLayout><Buttonandroid:layout_width="match_parent"android:layout_height="60dp"android:id="@+id/commit"android:text="提交"android:textSize="15sp"android:textColor="@color/smssdk_black"android:layout_marginLeft="48dp"android:layout_marginRight="48dp"android:layout_marginTop="48dp"></Button>
</LinearLayout>

关于“Mobsdk已停止支持非严格模式版本”的问题
使用一段时间以后,再打开AS,系统报错“Mobsdk已停止支持非严格模式版本”,查了官方文档以后,发现需要将build.gradle里面的classpath进行修改

 classpath "com.mob.sdk:MobSDK:2018.0319.1724"

仅做学习AS记录使用

学习参考博客
androidstudio基于mob平台实现手机号验证

Android Studio基于mob的短信验证相关推荐

  1. Android Studio使用Mob实现短信验证功能遇到的问题解决

    一.Mob短信验证 全球领先的数据智能科技平台-MobTech袤博解决 进行注册登入 登入成功后,点击开发者服务中的短信验证,来到开发者平台 填好信息创建成功就是下图,可以看到对应信息如下(AppKe ...

  2. Android之Mob第三方短信验证服务

    目录 mob简单介绍 前期准备 2.1注册登录 2.2创建应用 2.3下载sdk 2.4引入sdK 调用有界面接口 3.1效果图 3.2配置AndroidManifest.xml 3.3添加代码 调用 ...

  3. Android studio 实现打电话发短信浏览网页功能 android开发小实验

    Android studio 实现打电话发短信浏览网页功能 android开发小实验 目标: android studio 实现打电话 发短信 浏览网站的功能 先在布局里面定义几个按钮 分别为 打电话 ...

  4. 解决mob网站短信验证SDK更新后,android studio下的mob短信验证接入问题

    对于android开发来说,遇到需要短信注册验证的问题是很常见的,今天我们就来聊一聊在android studio上SMSSDK的接入.废话不多说:具体步骤如下: (1)打开我们的mob官网:http ...

  5. Mob之短信验证集成SMSSDK

    开相关发中总会遇到短信验证这些操作,这周没有来得及写新的东西,借此分享一篇以前学习短信验证的笔记,本文使用的是 Mob 提供的 SMSSDK . 下载 SMSSDK 官网下载地址:SMSSDK 集成 ...

  6. 使用Android Studio写一个发短信的小案例

    废话不多说,直接贴图 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayoutan ...

  7. Android实现第三方Mob短信验证登录以及手机号显示和修改用户名(简易新闻 五)

    Android实现第三方Mob短信验证登录以及手机号显示和修改用户名(简易新闻 五) 关于之前的功能实现可以从制作简易新闻App导航篇中查看 因为这篇是写了有一段时间的博客,所以这篇(包括后面的简易新 ...

  8. Redis框架(三):大众点评项目 基于Session的短信登录

    大众点评项目 基于Session的短信登录 需求:基于Session实现短信验证登录 基于Session的短信登录 发送手机验证码 实现登录 (注意MyBatisP的接口使用) 新的问题 Spring ...

  9. Android实战简易教程-第三十九枪(第三方短信验证平台Mob和验证码自动填入功能结合实例)

    用户注册或者找回密码时一般会用到短信验证功能,这里我们使用第三方的短信平台进行验证实例. 我们用到第三方短信验证平台是Mob,地址为:http://mob.com/ 一.注册用户.获取SDK 大家可以 ...

最新文章

  1. centos 7 安装nfs 服务
  2. Mybatis问题解释?
  3. 今天才知道什么是柏拉图式的爱情
  4. java的json导出excel_利用json生成excel表格
  5. hdu 4414 Finding crosses
  6. android无线充产品,一天售罄!鲁蛋超薄无线快充太火爆 兼容苹果安卓成最大卖点...
  7. 如何跟踪发现Linux内核补丁(patch)
  8. php垂直居中代码_纯css实现水平和垂直居中
  9. python合并表格用什么库_python合并多个excel表格数据库-python实现excel合并
  10. printf()语句
  11. html代码中如何将浏览器的菜单栏,状态栏,地址栏,工具栏等隐藏,标题栏html代码 HTML中怎么设置标题居中...
  12. 项目管理十大知识领域一——项目整体管理
  13. mac 壁纸 android,Mac系统风格桌面
  14. 怎样控制小程序tabbar图标大小_微信小程序tabBar的基本设置-微信小程序tabbar字体大小-微信小程序tabbar高度...
  15. 科普|股东需要对企业债务承担连带责任
  16. linux最上层目录是什么,Linux基础知识之--目录组成结构,当前目录及上层目录表示方法,目录访问权限...
  17. 监听enter按键,使其拥有Tab按键的切换功能
  18. document.getElementById 用法 详解!
  19. Codeup——575 | 问题 H: 部分A+B (15)
  20. Baize_ServoDriver_esp32——arduino 32路舵机驱动板(esp32主控,免费开源,附程序、固件)

热门文章

  1. 中国地方游戏网游戏大厅 v2.0 官方
  2. 【数学模型】基于matlab实现车载自组织网络中路边性能及防碰撞算法研究
  3. 神经辐射场(NERF)模型:一个令人惊叹的三维场景重建方法
  4. VSCode不同窗口设置不同颜色
  5. 2011考研英语单词记忆的15个方法总结
  6. 67.220.92.12 forum index.php,index.asp
  7. JDK8中Collectors.toMap方法报Duplicate key xxx错误信息
  8. 21 CoCos Creator-设置
  9. React Native for Arcgis 地图开发 聚合图Cluster (十一)
  10. Win10系统下浏览器缓存怎么清理?