文档章节

Android自动填写获取到的验证码

SuShine
 SuShine
发布于 2016/03/02 11:13
字数 194
阅读 31
收藏 4


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

    }


}



© 著作权归作者所有

共有 人打赏支持
SuShine
粉丝 126
博文 563
码字总数 154303
作品 0
朝阳
后端工程师
私信 提问
Android开发:使用AutoInputAuthCode快速实现自动填写验证码

前言 该类库的实现原理:《Android开发:实现APP自动填写注册验证码功能》。感兴趣的可以看下。 项目地址:github.com/xiong-it/Au…,欢迎star/fork,或者issue,pr。 本文原创作者:MichaelX...

MichaelX
2018/10/30
0
0
自动提取短信验证码解决方案

主要功能及优点 1.收到验证码短信后,自动提取短信中的验证码填写到相应输入框 2.可指定一个号码,只读取与他有关短信,避免提取来源错误 3.利用正则表达式,可匹配各种类型验证码 模块集成关...

极分享社区
2016/03/12
236
3
Android短信监听接收器插入

wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随阿意定制修改。本文分享其中短信...

OSC_RjDivW
2016/11/26
146
0
Android 获取验证码自动填充

前提 手机获取验证码,这是每个APP都会实现的功能,但是获取验证码之后,切换到短信界面,然后再返回到当前界面,感觉比较蛋疼,也比较麻烦,因此想着获取到验证码之后自动填充这个功能相对来...

Silence潇湘夜雨
2018/06/13
0
0
android发送短信验证码并自动获取验证码填充文本框

android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框。 一.接入短信平台 首先需要选择短信平台接入,这里使用的是榛子云短信平台(http://smsow.zhenzikj.com), 两分钟申请测...

zuolz1985
2018/07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部