软件编程
位置:首页>> 软件编程>> Android编程>> Android 短信验证码自动填写

Android 短信验证码自动填写

作者:lqh  发布时间:2022-06-15 08:22:56 

标签:Android,短信验证

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);

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

来源:http://blog.csdn.net/ufo00001/article/details/64920867

0
投稿

猜你喜欢

  • 前言说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少。有不少人
  • 引言HDFS Balancer工具可以用来分析块的分布情况,并且可以重新分配DataNode中的数据。本文通过为您介绍如何使用HDFS Ba
  • Java 7的这个新特性改变了警告的对象。构建这些类型毕竟有破坏类型安全的风险,这总得有人知道。但 API 的用户对此是无能为力的,不管do
  • 本文解析了C# KeyUp事件中MessageBox的回车(Enter)键出现回调问题的解决办法。具体问题如下:在一个窗体上有一个名为txt
  • 一. 加载预加载:1.反射注解框架Reflect信息,在Application内多线程预加载至缓存。2.资源预加载懒加载:1.Fragmen
  • 本文实例为大家分享了Java实现医院管理系统的具体代码,供大家参考,具体内容如下1.开发工具NetBeans8.2Mysql5.7mysql
  • 什么是队列结构一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。分类:顺序队列结构链式队列结构基本操作:入队
  • 从英文中重建数字给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按 升序 返回原始的数字。示例 1:输入:s
  • 小编对微信开发颇感兴趣,查阅了网上相关文章进行整理,方便大家一起学习。1、注册帐号--填写服务器配置在https://mp.weixin.q
  • 前言日常的Android开发中,我们会用到IntentFilter的匹配规则。IntentFilter的主要规则分为action、categ
  • Actuator简介监控分类Actuator 提供Rest接口,展示监控信息。接口分为三大类:应用配置类:获取应用程序中加载的应用配置、环境
  • 1.ACSII码加密//ACSII码加密        private static string
  • 什么是动态线程池?在线程池日常实践中我们常常会遇到以下问题:代码中创建了一个线程池却不知道核心参数设置多少比较合适。参数设置好后,上线发现需
  • 本文实例讲述了C#抓取当前屏幕并保存为图片的方法。分享给大家供大家参考。具体分析如下:这是一个C#实现的屏幕抓取程序,可以抓取整个屏幕保存为
  • 本文实例讲述了Java中的多态用法。分享给大家供大家参考。具体分析如下:多态,是面向对象的程序设计语言最核心的特征。封装性、继承性都比较简单
  • 引言什么?兔了个兔?吐了还要吐?首先今天,我们自己用android程序实现一个兔年的新年贺卡。下面就是见证美好的时刻,上效果。好,我们来使用
  • 一、图片预览:一、实现功能:需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView。二、具体实现:XML中布局中定义I
  • 一、背景项目中肯定会遇到异步调用其他方法的场景,比如有个计算过程,需要计算很多个指标的值,但是每个指标计算的效率快慢不同,如果采用同步执行的
  • 事件处理主要涉及:事件源,事件,事件处理者在GUI中事件源是事件发生的场所,通常是各个组件,如被单击的按钮;事件是用户对界面的操作,如操作键
  • 实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,
手机版 软件编程 asp之家 www.aspxhome.com