iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在Android开发中利用Mob实现一个短信验证码
  • 654
分享到

如何在Android开发中利用Mob实现一个短信验证码

androidmobroi 2023-05-31 03:05:20 654人浏览 安东尼
摘要

如何在Android开发中利用Mob实现一个短信验证码?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前期准备(1)Mob网站上下载SMS对应的SDK,解压出来为图1,打开图1,

如何在Android开发中利用Mob实现一个短信验证码?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

前期准备

(1)Mob网站上下载SMS对应的SDK,解压出来为图1,打开图1,将其中的文件拷贝到as项目中的libs文件夹下,另外在add as library。

如何在Android开发中利用Mob实现一个短信验证码

图1

如何在Android开发中利用Mob实现一个短信验证码

图2

(2)在as项目中的AndroidManifest.xml文件中添加图3所需权限,由于SMS权限为危险权限,所以还要动态申请,这在下面代码中会有体现。注意权限是写在application外面,不是里面。

如何在Android开发中利用Mob实现一个短信验证码

图3

(3)如果图4中的targetSdkVersion大于22,那么在代码中必须动态申请权限。

如何在Android开发中利用Mob实现一个短信验证码

图4

(4)在as项目中的图7中的build.gradle文件中添加图5和图6红色框中内容。

如何在Android开发中利用Mob实现一个短信验证码

图5

如何在Android开发中利用Mob实现一个短信验证码

图6

如何在Android开发中利用Mob实现一个短信验证码

图7

(5)在Mob网站上申请App Key和App Secret。

如何在Android开发中利用Mob实现一个短信验证码

图8

(6)Toast

如何在Android开发中利用Mob实现一个短信验证码

3、代码(没整理,将就看)

package com.gxu.lepao.activity;import android.Manifest;import android.app.Dialog;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.os.CountDownTimer;import android.os.Handler;import android.os.Message;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AlertDialog;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import com.gxu.lepao.R;import com.gxu.lepao.model.UserInfo;import org.litepal.crud.DataSupport;//LitePal开源数据库框架import java.util.List;import cn.smssdk.EventHandler;//Mob短信验证码import cn.smssdk.SMSSDK;//Mob短信验证码public class ReGISterActivity extends BaseActivity { private EditText phoneEdit; private EditText smsEdit; private Button getSms; private Button submitSms; private TextView login; private TextView reset; private CountDownTimer countDownTimer; //倒计时 private int TIME = 60; //这是中国区号,如果需要其他国家列表,可以使用getSupportedCountries();获得国家区号 public String country = "86"; //APPKEY private static String appKey = "1e0d15118480d"; // 填写从短信SDK应用后台注册得到的APPSECRET private static String appSecret = "daa97d794e2436abcae624ac3785d2ef"; //表示是否使用了registerEventHandler private boolean ready; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  Log.d("RegisterActivity","Task; id is " + getTaskId());  setContentView(R.layout.activity_register);  // 初始化界面  initView();  //初始化SMSSDK  initSDK();  getSms.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    boolean isLogin = false;    //判断手机号码是否已注册过    isLogin = isRegister();    if(!TextUtils.isEmpty(phoneEdit.getText().toString())){     if(!isLogin){       //发送短信权限      if(ContextCompat.checkSelfPermission(RegisterActivity.this        ,Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED){       //显示申请权限弹窗       showRequestPermission();      }else{       //弹窗确认       alterWarning();      }     }else{      Toast.makeText(RegisterActivity.this,"此手机号码已经注册过",Toast.LENGTH_SHORT).show();     }    }else{     Toast.makeText(RegisterActivity.this,"请输入手机号码",Toast.LENGTH_SHORT).show();    }   }  });  submitSms.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    String sms = smsEdit.getText().toString();    String phone = phoneEdit.getText().toString();    if(!TextUtils.isEmpty(sms)){     SMSSDK.submitVerificationCode( country, phone, sms);    }else{     Toast.makeText(RegisterActivity.this,"请输入验证码",Toast.LENGTH_SHORT).show();    }   }  });  login.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);    startActivity(intent);   }  });  reset.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    Intent intent = new Intent(RegisterActivity.this,ResetPwdActivity.class);    startActivity(intent);   }  }); } //申请权限弹窗 private void showRequestPermission(){  //先new出一个监听器,设置好监听  DialogInterface.OnClickListener dialoGonclicListener=new DialogInterface.OnClickListener(){   @Override   public void onClick(DialogInterface dialog, int which) {    switch(which){     case Dialog.BUTTON_POSITIVE:      //接收短信权限      ActivityCompat.requestPermissions(RegisterActivity.this,new String[]{Manifest.permission.RECEIVE_SMS},1);      //发送短信权限      ActivityCompat.requestPermissions(RegisterActivity.this,new String[]{Manifest.permission.SEND_SMS},2);      //弹窗确认      alterWarning();      break;     case Dialog.BUTTON_NEGATIVE:      Toast.makeText(RegisterActivity.this, "拒绝" + which, Toast.LENGTH_SHORT).show();      break;    }   }  };  //dialog参数设置  AlertDialog.Builder builder=new AlertDialog.Builder(RegisterActivity.this); //先得到构造器  builder.setTitle("申请权限"); //设置标题  builder.setMessage("要允许lepao接收验证码短信吗?"); //设置内容  builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可  builder.setPositiveButton("允许",dialogOnclicListener);  builder.setNegativeButton("拒绝", dialogOnclicListener);  builder.create().show(); } //申请权限 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {  switch (requestCode){   case 1:    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){     //initSDK();     Toast.makeText(this,"你授权。。。接收短信权限",Toast.LENGTH_SHORT).show();    }else{     Toast.makeText(this,"你拒绝。。。接收短信权限",Toast.LENGTH_SHORT).show();    }    break;   case 2:    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){     Toast.makeText(this,"你授权。。。发送短信权限",Toast.LENGTH_SHORT).show();    }else{     Toast.makeText(this,"你拒绝。。。发送短信权限",Toast.LENGTH_SHORT).show();    }    break;   default:  } } // 初始化短信SDK private void initSDK() {  SMSSDK.initSDK(this, appKey, appSecret, true);  //final Handler handler = new Handler();  EventHandler eventHandler = 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(RegisterActivity.this,SetPwdActivity.class);      intent.putExtra("phone",phoneEdit.getText().toString());      startActivity(intent);      finish();     }     //已发送验证码     else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE)     {      toast("验证码已经发送");     } else     {      ((Throwable) data).printStackTrace();      String str = data.toString();      toast(str);     }    }    if(result==SMSSDK.RESULT_ERROR) {     toast("验证码错误");    }   }  };  // 注册回调监听接口  SMSSDK.registerEventHandler(eventHandler);  ready = true; } //吐司的一个小方法 private void toast(final String str) {  runOnUiThread(new Runnable() {   @Override   public void run() {    Toast.makeText(RegisterActivity.this, str, Toast.LENGTH_SHORT).show();   }  }); } //销毁短信注册 @Override protected void onDestroy() {  // 注销回调接口registerEventHandler必须和unregisterEventHandler配套使用,否则可能造成内存泄漏。  if(ready){   SMSSDK.unregisterAllEventHandler();  }  super.onDestroy(); } //初始化界面 private void initView(){  phoneEdit = (EditText) findViewById(R.id.phone);  smsEdit = (EditText) findViewById(R.id.sms);  getSms = (Button) findViewById(R.id.getSms);  submitSms = (Button) findViewById(R.id.submitSms);  login = (TextView) findViewById(R.id.login);  reset = (TextView) findViewById(R.id.reset); } //弹窗确认 private void alterWarning(){  //先new出一个监听器,设置好监听  DialogInterface.OnClickListener dialogOnclicListener=new DialogInterface.OnClickListener(){   @Override   public void onClick(DialogInterface dialog, int which) {    switch(which){     case Dialog.BUTTON_POSITIVE:      dialog.dismiss();      //通过sdk发送短信验证(请求获取短信验证码,在监听(eventHandle)中返回)      SMSSDK.getVerificationCode(country, phoneEdit.getText().toString());      //设置获取验证码按钮不能点击      getSms.setClickable(false);      //倒计时,执行次数为(TIME+1)*1000/1000,countDownTimer每次执行间隔:1000(单位为毫秒)      countDownTimer = new CountDownTimer((TIME+1)*1000, 1000) {       @Override       public void onTick(long millisUntilFinished) {        getSms.setText(TIME-- + "秒后再次获取验证码");       }       @Override       public void onFinish() {        //设置获取验证码按钮可以点击        getSms.setClickable(true);        getSms.setText("点击获取短信验证码");       }      };      countDownTimer.start();      break;     case Dialog.BUTTON_NEGATIVE:      dialog.dismiss();      Toast.makeText(RegisterActivity.this, "已取消", Toast.LENGTH_SHORT).show();      break;    }   }  };  //dialog参数设置  AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到构造器  builder.setTitle("发送短信"); //设置标题  builder.setMessage("我们将把验证码发送到以下号码:\n"+country+"-"+phoneEdit.getText().toString()); //设置内容  builder.setIcon(R.drawable.icon);//设置图标,图片id即可  builder.setPositiveButton("确认",dialogOnclicListener);  builder.setNegativeButton("取消", dialogOnclicListener);  builder.create().show(); } //判断手机号码是否已注册过 public boolean isRegister(){  boolean isLogin = false;  。。。。。299   return isLogin; }}

--结束END--

本文标题: 如何在Android开发中利用Mob实现一个短信验证码

本文链接: https://www.lsjlt.com/news/223183.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Android开发中利用Mob实现一个短信验证码
    如何在Android开发中利用Mob实现一个短信验证码?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前期准备(1)Mob网站上下载SMS对应的SDK,解压出来为图1,打开图1,...
    99+
    2023-05-31
    android mob roi
  • 用实例分析Android如何用Mob实现发送短信验证码
    小编这次要给大家分享的是用实例分析Android如何用Mob实现发送短信验证码,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。和室友参加的互联网大赛要做一个 APP,涉及到用户的登录注册,于是上网找了许...
    99+
    2023-05-31
    android mob roi
  • 短信验证码校验功能如何利用SpringBoot实现
    本篇文章为大家展示了短信验证码校验功能如何利用SpringBoot实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。思路用户输入手机号后,点击按钮获取验证码。并设置冷却时间,防止用户频繁点击。后台生...
    99+
    2023-05-31
    springboot bo
  • 如何在PHP中实现用户注册时发送短信验证码
    随着移动互联网的普及,手机号码已经成为用户注册和登录的重要凭证之一。为了保证用户账号的安全性,很多网站和应用都会在用户注册时发送短信验证码进行验证。本文将介绍如何在PHP中实现用户注册时发送短信验证码的功能,并附上具体的代码示例。一、创建短...
    99+
    2023-10-21
    PHP 短信验证码 用户注册
  • 使用python爬虫怎么实现一个发送短信验证码功能
    本篇文章为大家展示了使用python爬虫怎么实现一个发送短信验证码功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。内联代码片。import timedef get_time()...
    99+
    2023-06-06
  • 怎么在Android应用中实现一个信验证码倒计时功能
    这篇文章将为大家详细讲解有关怎么在Android应用中实现一个信验证码倒计时功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现步骤:一个关键类:CountDownTimer(Androi...
    99+
    2023-05-31
    android roi
  • 如何在Java中利用patchca实现一个验证码生成功能
    本篇文章为大家展示了如何在Java中利用patchca实现一个验证码生成功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代码如下: @RequestMapping(value = {"...
    99+
    2023-05-31
    java patchca ava
  • 怎么在Android中利用控件实现一个验证码倒计时功能
    这期内容当中小编将会给大家带来有关怎么在Android中利用控件实现一个验证码倒计时功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用方式<com.landptf.view.CountDownM...
    99+
    2023-05-31
    android roi
  • 如何在Android中实现一个滑块拼图验证码功能
    本篇文章给大家分享的是有关如何在Android中实现一个滑块拼图验证码功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、实现步骤:定义自定义属性; 2、确认目标位置,这里使...
    99+
    2023-06-06
  • 在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充
    在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。步骤:首先我使用了Conte...
    99+
    2023-05-31
    android contentobserver bs
  • Android如何使用RxBinding与RxJava2实现短信验证码倒计时功能
    这篇文章给大家分享的是有关Android如何使用RxBinding与RxJava2实现短信验证码倒计时功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。场景:注册账号页面时,我们点击按钮发送验证码,在等待验证码时...
    99+
    2023-05-30
    android
  • 如何在PHP中实现用户注册时发送手机验证码和短信通知
    概述:在用户注册过程中,为了保证账户安全性,通常会要求用户进行手机验证。本文将介绍如何使用PHP编程语言实现用户注册时发送手机验证码和短信通知的功能。我们将使用阿里云短信服务作为示例,但也可适应其他短信服务提供商。前提条件:已有阿里云账户,...
    99+
    2023-10-21
    PHP 短信通知 用户注册 手机验证码
  • 利用Swing如何实现一个动态验证码功能
    利用Swing如何实现一个动态验证码功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。code代码如下:import java.awt.Color; import java...
    99+
    2023-05-31
    swing 验证码
  • 利用java如何实现一个验证码生成功能
    利用java如何实现一个验证码生成功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、serialVersionUID    private...
    99+
    2023-05-31
    java 验证码 ava
  • 在Android开发中利用MediaRecorder实现一个录音功能
    这篇文章给大家介绍在Android开发中利用MediaRecorder实现一个录音功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下:public class MediaRecorderActivity ext...
    99+
    2023-05-31
    android mediarecorder roi
  • 在Android开发中利用ViewPager实现一个轮播功能
    本篇文章给大家分享的是有关在Android开发中利用ViewPager实现一个轮播功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ViewPager是一个常用的Android...
    99+
    2023-05-31
    viewpager android age
  • android开发中如何利用listview实现一个悬浮topBar效果
    android开发中如何利用listview实现一个悬浮topBar效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。虽然listview是过去式,但由于项目中还是有用list...
    99+
    2023-05-31
    android listview topbar
  • 如何在Android 开发中实现一个日历控件
    这期内容当中小编将会给大家带来有关如何在Android 开发中实现一个日历控件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、主要功能支持农历、节气、常用节假日2、日期范围设置,默认支持的最大日期范围[...
    99+
    2023-05-31
    android roi
  • 如何在Android中利用view实现一个手势密码功能
    这篇文章将为大家详细讲解有关如何在Android中利用view实现一个手势密码功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。用法: <com.leo.library.view.Ge...
    99+
    2023-05-31
    android roi view
  • 如何在Android开发中使用viewpager实现一个3D画廊
    今天就跟大家聊聊有关如何在Android开发中使用viewpager实现一个3D画廊,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ViewPager有个方法叫做:setPageTra...
    99+
    2023-05-31
    viewpager age roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作