Android开发中通过手机号+短信验证码登录的实例代码

首先,需要一个电话号码,目前很多账户都是将账户名设置成手机号,然后点击按钮获取手机验证码。

其次,你需要后台给你手机短信的验证接口,各个公司用的不一样,这个身为前端,不需要你来考虑,你只要让你后台给你写好接口,你直接调用就好了。

activity_login.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:gravity="center"
    android:orientation="horizontal">
    <EditText
      android:id="@+id/mobile_login"
      android:layout_width="match_parent"
      android:layout_height="40dp"
      android:layout_marginLeft="10dp"
      android:hint="请输入您的手机号"
      android:textSize="16sp"
      android:background="@null"
      android:inputType="number"
      />
  </LinearLayout>
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="15dp"
    android:gravity="center"
    android:orientation="horizontal">
    <EditText
      android:id="@+id/yanzhengma"
      android:layout_width="0dp"
      android:layout_height="40dp"
      android:layout_weight="4"
      android:background="@null"
      android:layout_marginLeft="10dp"
      android:hint="请输入验证码"
      android:textSize="16sp"
      android:inputType="number"
      />
    <Button
      android:id="@+id/getyanzhengma1"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1.9"
      android:textSize="13sp"
      android:gravity="center"
      android:text="获取验证码"
      android:layout_gravity="center"
      />
  </LinearLayout>
  <Button
    android:id="@+id/login_btn"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:text="登录"
    android:textSize="16sp"
   />
</LinearLayout>

LoginActivity.java

public class LoginActivity extends Activity implements View.OnClickListener {
  private int countSeconds = 60;//倒计时秒数
  private EditText mobile_login, yanzhengma;
  private Button getyanzhengma1, login_btn;
  private Context mContext;
  private String usersuccess;
  private Handler mCountHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      if (countSeconds > 0) {
        --countSeconds;
        getyanzhengma1.setText("(" + countSeconds + ")后获取验证码");
        mCountHandler.sendEmptyMessageDelayed(0, 1000);
      } else {
        countSeconds = 60;
        getyanzhengma1.setText("请重新获取验证码");
      }
    }
  };
  private String userinfomsg;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = this;
      setContentView(R.layout.activity_login);
      initView();
      initEvent();
      initData();
 }
  private void initView() {
    mobile_login = (EditText) findViewById(R.id.mobile_login);
    getyanzhengma1 = (Button) findViewById(R.id.getyanzhengma1);
    yanzhengma = (EditText) findViewById(R.id.yanzhengma);
    login_btn = (Button) findViewById(R.id.login_btn);
  }
  private void initEvent() {
    getyanzhengma1.setOnClickListener(this);
    login_btn.setOnClickListener(this);
  }
  private void initData() {
  }
  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.getyanzhengma1:
        if (countSeconds == 60) {
          String mobile = mobile_login.getText().toString();
          Log.e("tag", "mobile==" + mobile);
          getMobiile(mobile);
        } else {
          Toast.makeText(LoginActivity.this, "不能重复发送验证码", Toast.LENGTH_SHORT).show();
        }
        break;
      case R.id.login_btn:
        login();
        break;
      default:
        break;
    }
  }
  //获取信息进行登录
  public void login() {
    String mobile = mobile_login.getText().toString().trim();
    String verifyCode = yanzhengma.getText().toString().trim();
    RequestParams params = new RequestParams(“这里换成你的请求登录的接口”);
    x.http().post(params, new Callback.ProgressCallback<String>() {
      @Override
      public void onWaiting() {
      }
      @Override
      public void onStarted() {
      }
      @Override
      public void onLoading(long total, long current, boolean isDownloading) {
      }
      @Override
      public void onSuccess(String result) {
        try {
          JSONObject jsonObject = new JSONObject(result);
          Log.e("tag", "登陆的result=" + jsonObject);
          String success = jsonObject.optString("success");
          String data = jsonObject.optString("data");
          String msg=jsonObject.optString("msg");
          if ("true".equals(success)) {
            Log.e("tag","登陆的data="+data);
            JSONObject json = new JSONObject(data);
            token = json.optString("token");
            userId = json.optString("userId");
         //我这里按照我的要求写的,你们也可以适当改动
            //获取用户信息的状态
            getUserInfo();
          }else{
            Toast.makeText(LoginActivity.this, msg, Toast.LENGTH_SHORT).show();
          }
        } catch (JSONException e) {
          e.printStackTrace();
        }
      }
      @Override
      public void onError(Throwable ex, boolean isOnCallback) {
      }
      @Override
      public void onCancelled(CancelledException cex) {
      }
      @Override
      public void onFinished() {
      }
    });
  }
  //获取验证码信息,判断是否有手机号码
  private void getMobiile(String mobile) {
    if ("".equals(mobile)) {
      Log.e("tag", "mobile=" + mobile);
      new AlertDialog.Builder(mContext).setTitle("提示").setMessage("手机号码不能为空").setCancelable(true).show();
    } else if (isMobileNO(mobile) == false) {
      new AlertDialog.Builder(mContext).setTitle("提示").setMessage("请输入正确的手机号码").setCancelable(true).show();
    } else {
      Log.e("tag", "输入了正确的手机号");
      requestVerifyCode(mobile);
    }
  }
  //获取验证码信息,进行验证码请求
  private void requestVerifyCode(String mobile) {
   RequestParams requestParams = new RequestParams(“这里是你请求的验证码接口,让后台给你,参数什么的加在后面”);
    x.http().post(requestParams, new Callback.ProgressCallback<String>() {
      @Override
      public void onWaiting() {
      }
      @Override
      public void onStarted() {
      }
      @Override
      public void onLoading(long total, long current, boolean isDownloading) {
      }
      @Override
      public void onSuccess(String result) {
        try {
          JSONObject jsonObject2 = new JSONObject(result);
          Log.e("tag", "jsonObject2" + jsonObject2);
          String state = jsonObject2.getString("success");
          String verifyCode = jsonObject2.getString("msg");
          Log.e("tag", "获取验证码==" + verifyCode);
          if ("true".equals(state)) {
            Toast.makeText(LoginActivity.this, verifyCode, Toast.LENGTH_SHORT).show();
            startCountBack();//这里是用来进行请求参数的
          } else {
            Toast.makeText(LoginActivity.this, verifyCode, Toast.LENGTH_SHORT).show();
          }
        } catch (JSONException e) {
          e.printStackTrace();
        }
      }
      @Override
      public void onError(Throwable ex, boolean isOnCallback) {
        ex.printStackTrace();
      }
      @Override
      public void onCancelled(CancelledException cex) {
      }
      @Override
      public void onFinished() {
      }
    });
  }
  //使用正则表达式判断电话号码
  public static boolean isMobileNO(String tel) {
    Pattern p = Pattern.compile("^(13[0-9]|15([0-3]|[5-9])|14[5,7,9]|17[1,3,5,6,7,8]|18[0-9])\\d{8}$");
    Matcher m = p.matcher(tel);
    System.out.println(m.matches() + "---");
    return m.matches();
  }
  //获取验证码信息,进行计时操作
  private void startCountBack() {
    ((Activity) mContext).runOnUiThread(new Runnable() {
      @Override
      public void run() {
        getyanzhengma1.setText(countSeconds + "");
        mCountHandler.sendEmptyMessage(0);
      }
    });
  }
}

以上所述是小编给大家介绍的Android开发中通过手机号+短信验证码登录的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android本地验证码的简易实现方法(防止暴力登录)

    0.  前言  验证码无处不在,有人问我,你知道达芬奇密码下面是什么吗,对,答案就是达芬奇验证码. 验证码一个最主要的作用就是防止恶意暴力破解登录,防止不间断的登录尝试,有人说其实可以在服务器端对该终端进行登录间隔检测,如果间隔太短可以展示拒绝的姿态.但是还是本地验证码作用更加实在,可以减轻服务器端的压力.这篇将使用自定义View来实现一个如下效果的简易本地验证码.算是对自定义View知识的复习吧. 1.  布局结构  <RelativeLayout xmlns:android="http

  • Android手机注册登录时获取验证码之后倒计时功能(知识点总结)

    app注册界面经常会遇到一个场景:手机注册,点击获取验证码,验证码发送成功之后,开始倒计时 具体代码如下所示: private TimerTask timerTask; private Timer timer; private int time = 5000;//五秒 private int timess; /** * 开始倒计时 */ private void startTimer() { timess = time/1000; tvTime.setText(timess+"S");

  • Android注册登录实时自动获取短信验证码

    android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便,分享一篇文章大家可以查看一下,点击. public class SMSReceiver extends BroadcastReceiver{ private String ver

  • Android开发中通过手机号+短信验证码登录的实例代码

    首先,需要一个电话号码,目前很多账户都是将账户名设置成手机号,然后点击按钮获取手机验证码. 其次,你需要后台给你手机短信的验证接口,各个公司用的不一样,这个身为前端,不需要你来考虑,你只要让你后台给你写好接口,你直接调用就好了. activity_login.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andr

  • vue实现通过手机号发送短信验证码登录的示例代码

    本文主要介绍了vue实现通过手机号发送短信验证码登录的示例代码,分享给大家,具体如下: <template> <div class="get-mobile" @touchmove.prevent> <div class="main"> <div class="pt-20 pr-15 pl-15 pb-20"> <input class="input mb-15" v-mod

  • Redis实现短信验证码登录的示例代码

    目录 效果图 pom.xml applicatoin.yml Redis配置类 controller serviceImpl mapper 效果图 发送验证码 输入手机号.密码以及验证码完成登录操作 pom.xml 核心依赖 <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version&g

  • IOS开发中如何设计短信验证码防刷机制

    最近遇到一个关于防止短信验证码被刷的产品设计问题,后来在面试一个前来应聘JAVA开发的程序员的时候,他也提到了他以前公司的系统也遭遇过这个被刷短信的问题.因此,就"如何设计短信验证码防刷机制"作一个总结和分享. 1.时间限制:60秒后才能再次发送 从发送验证码开始,前端(客户端)会进行一个60秒的倒数,在这一分钟之内,用户是无法提交多次发送信息的请求的.这种方法虽然使用得比较普遍,但是却不是非常有用,技术稍微好点的人完全可以绕过这个限制,直接发送短信验证码. 2.手机号限制:同一个手机

  • Android开发中实现发送短信的小程序示例

    上图为代码结构图. 现在我们看下具体的代码. Send.java package cn.com.sms.send; import java.util.ArrayList; import java.util.Iterator; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.te

  • Android用 Mob 实现发送短信验证码实例

    和室友参加的互联网大赛要做一个 APP,涉及到用户的登录注册,于是上网找了许多资料,其中有阿里大于,网易云等等,阿里大于的客服给我说他们不支持 Android,网易云还要拍手持身份证的照片,而且这两个都收费,还麻烦,于是找了一个既简单有免费的,叫做 Mob,官网如下 Mob 官网 官方文档看了很多,还是觉得写的不好,于是自己写一篇. 注册账号 在 Mob 官网右上角点击注册,依次填入信息,其中公司一栏可以随便填 添加应用 登录后,点击 SecurityCodeSDK - 立即使用,Mob 会提示

  • C# 开发(创蓝253)手机短信验证码接口的实例

    创蓝253: https://www.253.com/ #region 获取手机验证码(创蓝253) /// <summary> /// 获取手机验证码(创蓝253) /// </summary> /// <param name="phoneno">手机号</param> /// <returns></returns> [AllowAnonymous] public async Task<IHttpActio

  • Spring Security Oauth2.0 实现短信验证码登录示例

    本文介绍了Spring Security Oauth2.0 实现短信验证码登录示例,分享给大家,具体如下: 定义手机号登录令牌 /** * @author lengleng * @date 2018/1/9 * 手机号登录令牌 */ public class MobileAuthenticationToken extends AbstractAuthenticationToken { private static final long serialVersionUID = SpringSecur

  • Spring Security OAuth2集成短信验证码登录以及第三方登录

    前言 基于SpringCloud做微服务架构分布式系统时,OAuth2.0作为认证的业内标准,Spring Security OAuth2也提供了全套的解决方案来支持在Spring Cloud/Spring Boot环境下使用OAuth2.0,提供了开箱即用的组件.但是在开发过程中我们会发现由于Spring Security OAuth2的组件特别全面,这样就导致了扩展很不方便或者说是不太容易直指定扩展的方案,例如: 图片验证码登录 短信验证码登录 微信小程序登录 第三方系统登录 CAS单点登录

  • Spring Security 实现短信验证码登录功能

    之前文章都是基于用户名密码登录,第六章图形验证码登录其实还是用户名密码登录,只不过多了一层图形验证码校验而已:Spring Security默认提供的认证流程就是用户名密码登录,整个流程都已经固定了,虽然提供了一些接口扩展,但是有些时候我们就需要有自己特殊的身份认证逻辑,比如用短信验证码登录,它和用户名密码登录的逻辑是不一样的,这时候就需要重新写一套身份认证逻辑. 开发短信验证码接口 获取验证码 短信验证码的发送获取逻辑和图片验证码类似,这里直接贴出代码. @GetMapping("/code/

随机推荐