androidstudio基于mob平台实现手机号验证

一、配置

在根目录的build.gradle添加:
buildscript {
repositories {
maven {url “http://mvn.mob.com/android”}
}
dependencies {
classpath ‘com.mob.sdk:MobSDK:+’
}
}
在当前工程的build.gradle添加:
apply plugin: ‘com.mob.sdk’
MobSDK {
appKey “3215c1e94b289”
appSecret “88b943e3be4437d1f78ea9c416c53620”
SMSSDK {
mobileAuth true
autoSMS true
}
}
在manifest添加:

<uses-permission android:name="android.permission.READ_CONTACTS" />         <!--mob-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<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.READ_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />             <!--mob-->
并且在application添加:
<activity android:name=".forgetpwdphone"android:configChanges="keyboardHidden|orientation|screenSize"android:windowSoftInputMode="stateHidden|adjustResize"/>

二、xml文件

<?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_paret"android:layout_height="match_parent"android:orientation="vertical"android:padding="50dp"android:gravity="center"android:background="@mipmap/enrollbackgroud"tools:context=".forgetpwdphone"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="70dp"android:layout_height="wrap_content"android:text="手机号:"android:textSize="20dp"android:layout_weight="0"/><EditTextandroid:inputType="phone"android:id="@+id/et_phonenum"android:layout_weight="1"android:layout_width="0dp"android:layout_height="wrap_content"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/et_checkecode"android:layout_weight="1"android:layout_width="0dp"android:layout_height="wrap_content"android:hint="验证码"android:inputType="number"/><Buttonandroid:background="@drawable/changebutton"android:id="@+id/btn_check"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="获取验证码"android:textColor="#fff"/></LinearLayout><Buttonandroid:background="@drawable/changebutton"android:enabled="false"android:id="@+id/btn_sure"android:layout_marginTop="20dp"android:textColor="#fff"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录" />
</LinearLayout>

三、java文件

package com.example.smartcommunityv2;
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.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;            //mob
public class forgetpwdphone extends AppCompatActivity {private TimerTask tt;                                  //mobprivate Timer tm;private EditText et_phonenum;private Button btn_check;private EditText et_checkecode;private Button btn_sure;private int TIME = 60;//倒计时60s这里应该多设置些因为mob后台需要60s,我们前端会有差异的建议设置90,100或者120public String country="86";//这是中国区号,如果需要其他国家列表,可以使用getSupportedCountries();获得国家区号private String phone;private static final int CODE_REPEAT = 1; //重新发送                             //mob@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_forgetpwdphone);MobSDK.init(this, "3215c1e94b289", "88b943e3be4437d1f78ea9c416c53620");    //mobSMSSDK.registerEventHandler(eh); //注册短信回调(记得销毁,避免泄露内存)initView();                                                                                //mob}Handler hd = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == CODE_REPEAT) {btn_check.setEnabled(true);btn_sure.setEnabled(true);tm.cancel();//取消任务tt.cancel();//取消任务TIME = 60;//时间重置btn_check.setText("重新发送验证码");}else {btn_check.setText(TIME + "重新发送验证码");}}};//回调EventHandler eh=new EventHandler(){public void afterEvent(int event, int result, Object data) {if (result == SMSSDK.RESULT_COMPLETE) {if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {toast("验证成功");Intent intent = new Intent(forgetpwdphone.this, login.class);startActivity(intent);}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){       //获取验证码成功toast("获取验证码成功");}else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){//如果你调用了获取国家区号类表会在这里回调//返回支持发送验证码的国家列表}}else{//错误等在这里(包括验证失败)//错误码请参照http://wiki.mob.com/android-api-错误码参考/这里我就不再继续写了((Throwable)data).printStackTrace();String str = data.toString();toast(str);}}};private void toast(final String str) {runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(forgetpwdphone.this, str, Toast.LENGTH_SHORT).show();}});}private void initView() {et_phonenum = (EditText) findViewById(R.id.et_phonenum);btn_check = (Button) findViewById(R.id.btn_check);et_checkecode = (EditText) findViewById(R.id.et_checkecode);btn_sure = (Button) findViewById(R.id.btn_sure);btn_check.setOnClickListener(this::onClick);btn_sure.setOnClickListener(this::onClick);}public void onClick(View v){switch (v.getId()){case R.id.btn_check:phone = et_phonenum.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.find()if (matcher.find()){//匹配手机号是否存在alterWarning();}else{toast("手机号格式错误");}}else{toast("请先输入手机号");}break;case R.id.btn_sure://获得用户输入的验证码String code = et_checkecode.getText().toString().replaceAll("/s","");if (!TextUtils.isEmpty(code)){//判断验证码是否为空//验证SMSSDK.submitVerificationCode( country,  phone,  code);}else if(phone.length()==0&code.length()!=0){toast("请输入手机号");}else if(phone.length()==0&code.length()==0){toast("请输入完整信息");}break;}}//弹窗确认下发private void alterWarning() {//构造器AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("星际通告"); //设置标题builder.setMessage("我们将要发送伽马信号到坐标为" + phone + "的星球进行验证"); //设置内容builder.setIcon(R.mipmap.spongebob);//设置图标,图片id即可builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {//设置确定按钮@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss(); //关闭dialog//通过sdk发送短信验证(请求获取短信验证码,在监听(eh)中返回)SMSSDK.getVerificationCode(country, phone);//做倒计时操作Toast.makeText(forgetpwdphone.this, "已发送" + which, Toast.LENGTH_SHORT).show();btn_check.setEnabled(false);btn_sure.setEnabled(true);tm = new Timer();tt = new TimerTask() {@Overridepublic void run() {hd.sendEmptyMessage(TIME--);}};tm.schedule(tt,0,1000);}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置取消按钮@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();Toast.makeText(forgetpwdphone.this, "已取消" + which, Toast.LENGTH_SHORT).show();}});//参数都设置完成了,创建并显示出来builder.create().show();}//销毁短信注册@Overrideprotected void onDestroy() {super.onDestroy();// 注销回调接口registerEventHandler必须和unregisterEventHandler配套使用,否则可能造成内存泄漏。SMSSDK.unregisterEventHandler(eh);}
}

androidstudio基于mob平台实现手机号验证相关推荐

  1. Android Studio基于mob的短信验证

    Android Studio 基于mob平台提供的SMSSDK实现注册后绑定手机号的学习笔记 将mob提供的SMSSDK导入到AS中 首先在mob官网中注册自己的账号,申请一个app,获得APP Ke ...

  2. Android基于Mob平台(SMSSDK)实现手机号登录

    Android基于Mob平台(SMSSDK)实现手机号登录 文章目录 Android基于Mob平台(SMSSDK)实现手机号登录 1.Mob开发者注册流程 2.获取App Key和App Secre ...

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

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

  4. android怎么实现手机号登录(2020最新版超详细Mob平台+SMSSDK)?

    mob平台发送验证码 第一步:注册mob平台账号 第二步:在mob平台配置SMSSDK环境. 1.点击下图红色圆圈处的产品中心. 2.点击立即进入. 3.点击创建应用. 4.同意隐私服务. 5.创建应 ...

  5. mpython掌控板体温,基于Mpython平台验证水温的变化

    一.[思路] <水温的变化>是青岛版三年级上册科学第二单元第七课的内容, 常温下,热水的温度是如何变化的?有三种答案, 有人认为热水一开始降温很慢,越往后越快: 有人认为热水降温的速度是均 ...

  6. 基于AHB Slave设计及验证平台搭建

    基于AHB Slave设计及验证平台搭建 1.模块描述 2.设计划分 2.1Slave模块 2.2Clac模块 2.3TOP模块 3.目录规划 1.模块描述 完成一个AHB上的Slave模块,该模块主 ...

  7. 基于Android平台的手机安全助手的设计与实现

    1.研究(设计)目的意义及国内外研究状况和应用前景(附参考文献): (一)选题的目的和意义 Android曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞 ...

  8. 基于微信平台的“快递超市”设计

      毕业设计说明书     基于微信平台的"快递超市"设计               基于微信平台的"快递超市"设计 摘   要 通过对当今快递信息管理的分析 ...

  9. Android 基于bmob平台的手机登录验证码注册 等功能实现

    首先是基于Bmob 平台,采用MVP 开发模式.效果见图: 下面一 一给出源码: MVP 目录结构: 登录/注册的Activity: package com.example.yangzi.mvp_de ...

最新文章

  1. javascript引擎工作原理的初步了解
  2. Android 5.1 API 22 所有sdk文件下载地址
  3. vue 动态组件组件复用_真正的动态声明性组件
  4. PIC18F26K20
  5. python graphviz中文乱码_graphviz画图与中文乱码等问题总结
  6. php 截取base64内容,PHP-从长文本中删除Base64字符串
  7. 【C++】模板(函数模板,类模板,模板的特化,模板的分离编译)
  8. Pytorch练习--绘制Loss曲线
  9. 记录一下中移物联网的一面(方向:前端开发)
  10. 用什么词典可以翻译php,PHP调用有道词典翻译API实现翻译功能及代码
  11. dell r720xd 裸机配置系列 3 配置网络
  12. html 转换 hta,HTA (HTML Application) 簡介
  13. R语言25-Prosper 贷款数据分析1
  14. java PDF 生成方案
  15. QNX4系统启动过程
  16. 中国人寿研发中心笔试JAVA开发
  17. HAUT OJ 1231: ykc买零食
  18. 日本寿司第一人有多夸张?米饭用扇子降温,学徒十年才有资格煎蛋
  19. Bpl的使用以及与Dll的区别
  20. ZYNQMP显示界面数据异常bug记录

热门文章

  1. 在uni-app中使用彩色的iconfont
  2. 添加Sql作业,新建步骤出现:从IClassFactory为CLSID为{AA40D1D6-CAEF-4A56-B9BB-D0D3DC976BA2}的COM组件创建实例失败,原因是出现以下错误:c00
  3. 21、spring循环依赖 问题
  4. caj转pdf文件的操作方法?
  5. 仿京东淘宝放大镜特效 jqzoom.js
  6. 4行代码,Python解决美图秀秀
  7. 【GNN存在的问题和未来研究方向】
  8. 车市拐点?L2级辅助驾驶高增长「开启」下半年供应商更替潮
  9. Word中的一些编辑技巧1
  10. java.lang.ClassNotFoundException:javax.xml.ws.soap.AddressingFeature $ Responses