Android开发实现短信验证码功能(总结)

您所在的位置:网站首页 原生短信验证码在哪里看 Android开发实现短信验证码功能(总结)

Android开发实现短信验证码功能(总结)

2024-06-21 07:12| 来源: 网络整理| 查看: 265

今天做了一下手机登录常用的短信验证码功能,记录一下。(用Mob,主要是免费的,可以拿这个做研究。)

其中,最主要的是注册之后获取到的AppKey和AppSecret。

Mob官网:http://www.mob.com/

效果图如下:

步骤如下:

1、下载官方sdk,并且导入到项目里。(即把以下4个文件复制到libs目录下)

2、在build.gradle中添加如下部分:

repositories{ flatDir{ dirs 'libs' } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 以下部分为添加内容 implementation files('libs/MobCommons-2016.1201.1839.jar') implementation files('libs/MobTools-2016.1201.1839.jar') implementation name:'SMSSDK-2.1.3',ext:'aar' implementation name:'SMSSDKGUI-2.1.3',ext:'aar' }

3、在清单文件AndroidManifest.xml中添加权限等,代码如下:

4、LoginActivity.java中功能代码的实现:

package com.deepreality.smsvalidate; import android.content.Intent; import android.os.CountDownTimer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.util.regex.Matcher; import java.util.regex.Pattern; import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; public class LoginActivity extends AppCompatActivity implements View.OnClickListener { private Button validateNum_btn; private Button landing_btn; private EditText userName; private EditText validateNum; public EventHandler eh; //事件接收器 private TimeCount mTimeCount;//计时器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initEvent(); init(); } private void initEvent(){ userName = (EditText) findViewById(R.id.userName); validateNum = (EditText) findViewById(R.id.validateNum); validateNum_btn = (Button) findViewById(R.id.validateNum_btn); landing_btn = (Button) findViewById(R.id.landing_btn); validateNum_btn.setOnClickListener(this); landing_btn.setOnClickListener(this); mTimeCount = new TimeCount(60000, 1000); } /** * 初始化事件接收器 */ private void init(){ eh = new EventHandler(){ @Override public void afterEvent(int event, int result, Object data) { if (result == SMSSDK.RESULT_COMPLETE) { //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //提交验证码成功 startActivity(new Intent(LoginActivity.this, MainActivity.class)); //页面跳转 } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){ //获取验证码成功 } else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){ //返回支持发送验证码的国家列表 } } else{ ((Throwable)data).printStackTrace(); } } }; SMSSDK.registerEventHandler(eh); //注册短信回调 } @Override public void onClick(View view) { switch (view.getId()){ case R.id.validateNum_btn: // SMSSDK.getSupportedCountries();//获取短信目前支持的国家列表 if(!userName.getText().toString().trim().equals("")){ if (checkTel(userName.getText().toString().trim())) { SMSSDK.getVerificationCode("+86",userName.getText().toString());//获取验证码 mTimeCount.start(); }else{ Toast.makeText(LoginActivity.this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show(); } }else{ Toast.makeText(LoginActivity.this, "请输入手机号码", Toast.LENGTH_SHORT).show(); } break; case R.id.landing_btn: if (!userName.getText().toString().trim().equals("")) { if (checkTel(userName.getText().toString().trim())) { if (!validateNum.getText().toString().trim().equals("")) { SMSSDK.submitVerificationCode("+86",userName.getText().toString().trim(),validateNum.getText().toString().trim());//提交验证 }else{ Toast.makeText(LoginActivity.this, "请输入验证码", Toast.LENGTH_SHORT).show(); } }else{ Toast.makeText(LoginActivity.this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show(); } }else{ Toast.makeText(LoginActivity.this, "请输入手机号码", Toast.LENGTH_SHORT).show(); } break; } } /** * 正则匹配手机号码 * @param tel * @return */ public boolean checkTel(String tel){ Pattern p = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$"); Matcher matcher = p.matcher(tel); return matcher.matches(); } @Override protected void onDestroy() { super.onDestroy(); SMSSDK.unregisterEventHandler(eh); } /** * 计时器 */ class TimeCount extends CountDownTimer { public TimeCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onTick(long l) { validateNum_btn.setClickable(false); validateNum_btn.setText(l/1000 + "秒后重新获取"); } @Override public void onFinish() { validateNum_btn.setClickable(true); validateNum_btn.setText("获取验证码"); } } }

布局文件之类的,自行定义即可。

Demo地址:https://download.csdn.net/download/lpcrazyboy/10536978

(1个积分,拿去用。)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3