Android 短信验证码自动填充

Android 短信验证码自动填充一、前言:这周项目做优化,为用户操作更加方便,注册、忘记密码、更换手机号、所需要的获取验证码操作,增加获取短信验证码,然后自动填写到输入框中。思路简单,主要是监听短信的广播,然后正则短信中的验证码二、具体代码:packagecom.taikongdan.app.service;importandroid.content.BroadcastReceiver;importan

大家好,又见面了,我是你们的朋友全栈君。

一、前言:

这周项目做优化,为用户操作更加方便,注册、忘记密码、更换手机号、所需要的获取验证码操作,增加 获取短信验证码,然后自动填写到输入框中。思路简单,主要是监听短信的广播,然后正则短信中的验证码

二、具体代码:

package com.taikongdan.app.service;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by merbng on 2016/4/6.
 */
public class SMSReceiver extends BroadcastReceiver {
    public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
    public static final String TAG = "ImiChatSMSReceiver";

    public interface ISMSListener {
        void onSmsReceiver(String verifyCode);
    }

    private static ISMSListener mSMSListener;

    public SMSReceiver(ISMSListener mSMSListener) {
        this.mSMSListener = mSMSListener;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
            SmsMessage[] messages = getMessageFromIntent(intent);
            for (SmsMessage message : messages
                    ) {
            //  在这里你可以对放松的号码进行判断,只接受目标号码的验证码
                String msg = message.getDisplayMessageBody();
                Pattern p = Pattern.compile("\\d{6}");//这里你可以更改数字来指定验证码的位数
                Matcher m = p.matcher(msg);
                String verifyCode = null;
                while (m.find()) {
                    verifyCode = m.group();
                    break;
                }
                if (mSMSListener != null) {
                    mSMSListener.onSmsReceiver(verifyCode);
                }

            }

        }
    }

    private SmsMessage[] getMessageFromIntent(Intent intent) {
        Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
        byte[][] pduObjes = new byte[messages.length][];
        for (int i = 0; i < messages.length; i++) {
            pduObjes[i] = ((byte[]) messages[i]);

        }
        byte[][] pdus = new byte[pduObjes.length][];
        int pduCount = pdus.length;
        SmsMessage[] msgs = new SmsMessage[pduCount];
        for (int i = 0; i < pduCount; i++) {
            pdus[i] = pduObjes[i];
            msgs[i] = SmsMessage.createFromPdu(pdus[i]);
        }
        return msgs;
    }
}

在Activity  onCreate中,注册广播,

<pre name="code" class="java">    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rememeberactivity);
        mReceiver = new SMSReceiver(this);
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.provider.Telephony.SMS_RECEIVED");
        registerReceiver(mReceiver, filter);

    }


在界面销毁的时候 解绑广播

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mReceiver);
    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160334.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月16日 上午10:46
下一篇 2022年7月16日 上午10:46


相关推荐

  • php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取

    php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取ThinkPHP 中有一个 debug 调试功能 能输出报错文件的信息 并能看到这个函数被哪些函数调用 从框架的启动开始记录 特别方便调试 于是研究了下它的底层给予了实现

    2026年3月16日
    2
  • 中科曙光李斌:scaleFabric已落地万卡集群,国产IB生态正在形成

    中科曙光李斌:scaleFabric已落地万卡集群,国产IB生态正在形成

    2026年3月13日
    2
  • sqlite 可视化工具_mysql用什么可视化工具

    sqlite 可视化工具_mysql用什么可视化工具软件名称:SQLiteExpert下载地址:http://www.sqliteexpert.com/download.html下载免费的Personal版本就可以了 我试用了SQLiteExpert和Sqliteadmin,SQLiteExpert要好用的多! …

    2025年8月30日
    9
  • Python和Pycharm、Vscode使用技巧

    Python和Pycharm、Vscode使用技巧文章目录前言 PycharmDebug 函数 debugconsole 基于支持正则的文本编辑器批量修改把文本中的偶数和奇数分离参考资料前言前两天在调试一个巨大的程序 跑起来都要几个小时 经过把训练集替换成测试集之后才快了一些 但是仍然有中途崩溃的问题 期间想了各种办法 并总结了这篇文章 本文主要记录一些调试技巧 PycharmDebug 函数 my hook target function name fun to hook hook function tmp storage

    2026年3月17日
    2
  • matlab 画折线图并美化

    matlab 画折线图并美化使用函数:plot(绘图);set(设置坐标属性);print(输出图片)代码如下:X=1:9;Y=10:10:90;f2=figure(2);set(gcf,’unit’,’centimeters’,’position’,[0,0,8,6])plot(X,Y,’-ok’,’LineWidth’,1,’MarkerSize’,5,’MarkerFaceColor’,’k’)set(gca,’FontName’,’TimesNewRoman’,’FontSize’

    2022年6月7日
    213
  • 全网最全python爬虫精进

    全网最全python爬虫精进4.25(第一天)**第0关认识爬虫**1、初始爬虫爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。2、明晰路径2-1、浏览器工作原理(1)解析数据:当服务器把数据响应给浏览器之后,浏览器并不会直接把数据丢给我们。因为这些数据是用计算机的语言写的,浏览器还要把这些数据翻译成我们能看得懂的内容;(2)提取数据:我们就可以在拿到的数据中,挑选出对我们有用的数据;(3)存储数据:将挑选出来的有用数据保存在某一文件/数据库中。2-2、爬虫工作原理(1)获取数据:爬虫程序会根据

    2022年5月27日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号