Android 短信验证码自动填写

发布时间 - 2026-01-11 01:54:23    点击率:

Android 短信验证码自动填写

1.自定义Observer监听短信数据库变化(注意添加短信权限)

import android.app.Activity;
import android.content.ContentResolver;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.text.TextUtils;

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

/**
 * Created by 001 on 17/3/22.
 */

public class SmsObserver extends ContentObserver {

  public static final String SMS_URI_INBOX = "content://sms/inbox";
  private Activity activity = null;
  private String smsContent = "";
  private SmsListener listener;

  public SmsObserver(Activity activity, Handler handler, SmsListener listener) {
    super(handler);
    this.activity = activity;
    this.listener = listener;
  }

  @Override
  public void onChange(boolean selfChange) {
    super.onChange(selfChange);
    Cursor cursor = null;
    // 读取收件箱中含有某关键词的短信
    ContentResolver contentResolver = activity.getContentResolver();
    cursor = contentResolver.query(Uri.parse(SMS_URI_INBOX), new String[] {
            "_id", "address", "body", "read" }, "body like ? and read=?",
        new String[] { "%关键词%", "0" }, "date desc");
    if (cursor != null) {
      cursor.moveToFirst();
      if (cursor.moveToFirst()) {
        String smsbody = cursor
            .getString(cursor.getColumnIndex("body"));
        String regEx = "[^0-9]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(smsbody.toString());
        smsContent = m.replaceAll("").trim().toString();
        if (!TextUtils.isEmpty(smsContent)) {
          listener.onResult(smsContent);
        }

      }
    }
  }

  /*
   * 短信回调接口
   */
  public interface SmsListener {
    /**
     * 接受sms状态
     *
     * @Title: onResult
     */
    void onResult(String smsContent);
  }
}

2.使用:

SmsObserver smsObserver = new SmsObserver(this, new Handler(), new SmsObserver.SmsListener() {
      @Override
      public void onResult(String smsContent) {
 //根据需求写
 //如:editText.setText(smsContent);
      }    });this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsObserver);


感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 短信验证码  # 验证码  # Android实现自动填充短信验证码  # Android开发工程中集成mob短信验证码功能的方法  # Android获取和读取短信验证码的实现方法  # Android实现短信验证码获取自动填写功能(详细版)  # Android开发中通过手机号+短信验证码登录的实例代码  # Android实现获取短信验证码并自动填写功能  # Android利用CursorLoader实现短信验证码自动填写  # Android实现短信验证码自动填写  # Android实现自动填写获取验证码功能  # Android短信验证码自动填写实现代码  # 关键词  # 收件箱  # 希望能  # 自定义  # 谢谢大家  # 回调  # 中含有  # regex  # util  # TextUtils  # Created  # Pattern  # Matcher  # SMS_URI_INBOX  # String  # sms  # private  # inbox  # final 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 海南网站制作公司有哪些,海口网是哪家的?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何选择可靠的免备案建站服务器?  Python制作简易注册登录系统  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  php json中文编码为null的解决办法  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  奇安信“盘古石”团队突破 iOS 26.1 提权  html如何与html链接_实现多个HTML页面互相链接【互相】  如何快速搭建高效香港服务器网站?  如何在万网利用已有域名快速建站?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  潮流网站制作头像软件下载,适合母子的网名有哪些?  Android GridView 滑动条设置一直显示状态(推荐)  在线制作视频网站免费,都有哪些好的动漫网站?  BootStrap整体框架之基础布局组件  Linux后台任务运行方法_nohup与&使用技巧【技巧】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  焦点电影公司作品,电影焦点结局是什么?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Java解压缩zip - 解压缩多个文件或文件夹实例  北京专业网站制作设计师招聘,北京白云观官方网站?  七夕网站制作视频,七夕大促活动怎么报名?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  nginx修改上传文件大小限制的方法  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  如何快速搭建安全的FTP站点?  js代码实现下拉菜单【推荐】  创业网站制作流程,创业网站可靠吗?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何在腾讯云免费申请建站?  如何在IIS中新建站点并配置端口与IP地址?  如何用搬瓦工VPS快速搭建个人网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在宝塔面板创建新站点?  如何解决hover在ie6中的兼容性问题  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel怎么清理缓存_Laravel optimize clear命令详解  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Java垃圾回收器的方法和原理总结  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程