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
投稿
猜你喜欢
- 本文实例讲述了C#实现的ZPL条码打印类。分享给大家供大家参考,具体如下:using System;using System.Collect
- 这篇文章主要介绍了Java数据封装树形结构代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 一、环境准备:(根据自己电脑配置来选择安装版本,我的电脑是64位,所以此处选择64位安装)JDK下载:JDK 1.8下载地址: http:/
- 本文所述为基于C#实现的端口扫描器代码,代码内包括了窗体和逻辑处理两部分代码。在代码中,创建TcpClient对象,把TcpClient用于
- Eureka 采用 CS(Client/Server,客户端/服务器) 架构,它包括以下两大组件:Eureka Server:Eureka
- 1、xml代码:<?xml version="1.0" encoding="utf-8"?&g
- 顺序结构按照代码书写的顺序一行一行执行分支结构if 语句基本语法形式:if(布尔表达式){ //条件满足时执行代码
- 栅栏类似闭锁,但是它们是有区别的.1.闭锁用来等待事件,而栅栏用于等待其他线程.什么意思呢?就是说闭锁用来等待的事件就是countDown事
- 测试APP时出现以下错误信息:Intel HAXM is required to run this AVD.Your CPU does no
- 今天跟大家分享一个利用外部Jar包来实现Java操作CSV文件一.资源下载1.直接下载Jar包:javacsv-2.0.jar2.利用Mav
- Android动态修改ToolBar的Menu菜单效果图实现实现很简单,就是一个具有3个Action的Menu,在我们滑动到不同状态的时候,
- 前言将Chart的X轴设置为时间轴是一个说简单不简单的问题,说难也不难的问题,你用过之后呢就感觉很容易,你没用过呢,就比较难,所以这个是很值
- 一、树形结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树
- 简介今天给大家带来的是使用ShareSDK实现应用分享的功能。下面我们先看下效果图。效果图步骤 1. 获取AppKey访问mob官网http
- 微信小程序 navigator 跳转url传递参数使用方法说明(1)传值:在navigator的属性url后拼接?id(参数名字
- 前言接触Android Stuidio有一阵子了,之前用的时候有很多小问题,不过现在的版本感觉已经很好用了,所以准备彻底从Eclipse转战
- 原文:http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-ti
- 目录1、表达式目录树2、构建表达式目录树3、使用Expression来进行不同对象的相同名字的属性映射4、表达式目录树构建SQL删选&nbs
- 将IDEA的默认快捷键设置 设置成为 Eclipse的默认快捷键设置题意有些拗口,但没关系,就是将idea中的快捷键转为自己刚学Java时使
- 简单介绍 多个线程可以通过调用ManualResetEvent对象的WaitOne方法进入等