androidstudio基于mob平台实现手机号验证
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平台实现手机号验证相关推荐
- Android Studio基于mob的短信验证
Android Studio 基于mob平台提供的SMSSDK实现注册后绑定手机号的学习笔记 将mob提供的SMSSDK导入到AS中 首先在mob官网中注册自己的账号,申请一个app,获得APP Ke ...
- Android基于Mob平台(SMSSDK)实现手机号登录
Android基于Mob平台(SMSSDK)实现手机号登录 文章目录 Android基于Mob平台(SMSSDK)实现手机号登录 1.Mob开发者注册流程 2.获取App Key和App Secre ...
- Android之Mob第三方短信验证服务
目录 mob简单介绍 前期准备 2.1注册登录 2.2创建应用 2.3下载sdk 2.4引入sdK 调用有界面接口 3.1效果图 3.2配置AndroidManifest.xml 3.3添加代码 调用 ...
- android怎么实现手机号登录(2020最新版超详细Mob平台+SMSSDK)?
mob平台发送验证码 第一步:注册mob平台账号 第二步:在mob平台配置SMSSDK环境. 1.点击下图红色圆圈处的产品中心. 2.点击立即进入. 3.点击创建应用. 4.同意隐私服务. 5.创建应 ...
- mpython掌控板体温,基于Mpython平台验证水温的变化
一.[思路] <水温的变化>是青岛版三年级上册科学第二单元第七课的内容, 常温下,热水的温度是如何变化的?有三种答案, 有人认为热水一开始降温很慢,越往后越快: 有人认为热水降温的速度是均 ...
- 基于AHB Slave设计及验证平台搭建
基于AHB Slave设计及验证平台搭建 1.模块描述 2.设计划分 2.1Slave模块 2.2Clac模块 2.3TOP模块 3.目录规划 1.模块描述 完成一个AHB上的Slave模块,该模块主 ...
- 基于Android平台的手机安全助手的设计与实现
1.研究(设计)目的意义及国内外研究状况和应用前景(附参考文献): (一)选题的目的和意义 Android曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞 ...
- 基于微信平台的“快递超市”设计
毕业设计说明书 基于微信平台的"快递超市"设计 基于微信平台的"快递超市"设计 摘 要 通过对当今快递信息管理的分析 ...
- Android 基于bmob平台的手机登录验证码注册 等功能实现
首先是基于Bmob 平台,采用MVP 开发模式.效果见图: 下面一 一给出源码: MVP 目录结构: 登录/注册的Activity: package com.example.yangzi.mvp_de ...
最新文章
- javascript引擎工作原理的初步了解
- Android 5.1 API 22 所有sdk文件下载地址
- vue 动态组件组件复用_真正的动态声明性组件
- PIC18F26K20
- python graphviz中文乱码_graphviz画图与中文乱码等问题总结
- php 截取base64内容,PHP-从长文本中删除Base64字符串
- 【C++】模板(函数模板,类模板,模板的特化,模板的分离编译)
- Pytorch练习--绘制Loss曲线
- 记录一下中移物联网的一面(方向:前端开发)
- 用什么词典可以翻译php,PHP调用有道词典翻译API实现翻译功能及代码
- dell r720xd 裸机配置系列 3 配置网络
- html 转换 hta,HTA (HTML Application) 簡介
- R语言25-Prosper 贷款数据分析1
- java PDF 生成方案
- QNX4系统启动过程
- 中国人寿研发中心笔试JAVA开发
- HAUT OJ 1231: ykc买零食
- 日本寿司第一人有多夸张?米饭用扇子降温,学徒十年才有资格煎蛋
- Bpl的使用以及与Dll的区别
- ZYNQMP显示界面数据异常bug记录
热门文章
- 在uni-app中使用彩色的iconfont
- 添加Sql作业,新建步骤出现:从IClassFactory为CLSID为{AA40D1D6-CAEF-4A56-B9BB-D0D3DC976BA2}的COM组件创建实例失败,原因是出现以下错误:c00
- 21、spring循环依赖 问题
- caj转pdf文件的操作方法?
- 仿京东淘宝放大镜特效 jqzoom.js
- 4行代码,Python解决美图秀秀
- 【GNN存在的问题和未来研究方向】
- 车市拐点?L2级辅助驾驶高增长「开启」下半年供应商更替潮
- Word中的一些编辑技巧1
- java.lang.ClassNotFoundException:javax.xml.ws.soap.AddressingFeature $ Responses