Android自动填写获取到的验证码
2024-10-19 08:58:49
Android需要添加的相关权限
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
相关的代码:
package com.dongdongsongcan.app; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage; import com.su.dolphin.utils.LogUtil; import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class SMSReceiver extends BroadcastReceiver { public interface ISMSListener {
public void onSmsReceive(String verifyCode);
} private static ISMSListener mSMSListener; public SMSReceiver(ISMSListener ismsListener) {
mSMSListener = ismsListener;
} public static final String TAG = "ImiChatSMSReceiver"; //android.provider.Telephony.Sms.Intents public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; @Override public void onReceive(Context context, Intent intent) {
LogUtil.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
if (intent.getAction().equals(SMS_RECEIVED_ACTION)) { SmsMessage[] messages = getMessagesFromIntent(intent); for (SmsMessage message : messages) { // LogUtil.d(message.getOriginatingAddress() + " : " +
//
// message.getDisplayOriginatingAddress() + " : " +
//
// message.getDisplayMessageBody() + " : " +
//
// message.getTimestampMillis()); String msg = message.getDisplayMessageBody();
LogUtil.d("MSG: " + msg);
String verifyCode = null;
Pattern p = Pattern.compile("\\d{4}");
Matcher m = p.matcher(msg);
while (m.find()) {
verifyCode = m.group();
break;
}
LogUtil.d("verifyCode " + verifyCode);
if (mSMSListener != null) {
mSMSListener.onSmsReceive(verifyCode);
}
} } } public final SmsMessage[] getMessagesFromIntent(Intent intent) { Object[] messages = (Object[]) intent.getSerializableExtra("pdus"); byte[][] pduObjs = new byte[messages.length][]; for (int i = 0; i < messages.length; i++) { pduObjs[i] = (byte[]) messages[i]; } byte[][] pdus = new byte[pduObjs.length][]; int pduCount = pdus.length; SmsMessage[] msgs = new SmsMessage[pduCount]; for (int i = 0; i < pduCount; i++) { pdus[i] = pduObjs[i]; msgs[i] = SmsMessage.createFromPdu(pdus[i]); } return msgs; } }
最新文章
- 微信调用照相拍照等 js 接口的权限配置 和 照片上传和下载实现
- Hubilder快捷键
- 省市区县镇级联数据JS版
- Centos7安装Xmind
- phpcms v9 模板标签说明整理
- nyoj 1185 最大最小值【线段树最大值最小值维护】
- .Net资源文件全球化
- SQL Server 数据库游标选项
- html5 canvas 运行起来绝对让你震撼!
- C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符
- 用bat启动sqlserver服务
- c#实现Google账号登入授权(OAuth 2.0)并获取个人信息
- C语言字符串的常见特殊操作(除了string.c实现的那些接口)
- Markdown公式编辑学习笔记
- 《CLR via C#》读书笔记 之 泛型
- nyoj-1250-exgcd
- input同名
- 【python】正则表达式-正则表达式常见的字符和符号表
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别
- 使用Jasperreporter生成入库出库单打印等报表操作
热门文章
- oracle监听理解 命名理解
- Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置
- 在一台服务器上搭建多个项目的SVN
- 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
- 使用jdbc的缺点
- 【liunx】使用xshell连接虚拟机上的CentOS 7,使用xhell连接本地虚拟机上的Ubuntu, 获取本地虚拟机中CentOS 7的IP地址,获取本地虚拟机中Ubuntu 的IP地址,Ubuntu开启22端口
- Li的前期工作Level_Set_Evolution_Without_Re-initialization_A_New_Variational_Formulation
- UCN(User-Centric Networks,用户中心网络)
- Objective-C:ARC自动释放对象内存
- C语言:用二进制方式向文件读写一组数据(fread、fwrite)