自动填充短信验证码
短信验证码是大部分软件里面都存在的功能,同时为了避免用户自己输入导致的繁琐操作,有一部分app设计者将其设置成了自动填充的方式,方便用户操作那么这种方式是什么实现的呢。
利用广播接收器来拦截短信获取其中匹配的内容,提供回掉,将短信内容暴露到activity中实现自动填充
首先我们要实现一个广播接收器

package com.wquant.weilt.reciver;import java.util.regex.Matcher;
import java.util.regex.Pattern;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;public class SmsReciver extends BroadcastReceiver {private String patternCoder = "(?<!\\d)\\d{6}(?!\\d)";@Overridepublic void onReceive(Context context, Intent intent) {//获取短信数据Object[] objs = (Object[]) intent.getExtras().get("pdus");for (Object obj : objs) {byte[] pdu = (byte[]) obj;//将字节数组封装成为smsmessage对象SmsMessage sms = SmsMessage.createFromPdu(pdu);//获得短短信内容String message = sms.getMessageBody();Log.d("短信内容", "message:" + message);// 短息的手机号。。+86开头?String from = sms.getOriginatingAddress();Log.d("短信来源", "from :" + from);if (!TextUtils.isEmpty(from)) {String code = patternCode(message);if (!TextUtils.isEmpty(code)) {mMessageListener.onReceived(code);}}}}/*** 匹配短信中间的6个数字(验证码等)* * @param patternContent* @return*/private String patternCode(String patternContent) {if (TextUtils.isEmpty(patternContent)) {return null;}Pattern p = Pattern.compile(patternCoder);Matcher matcher = p.matcher(patternContent);if (matcher.find()) {return matcher.group();}return null;}// 回调接口public interface MessageListener {public void onReceived(String message);}MessageListener mMessageListener;public void setOnReceivedMessageListener(MessageListener messageListener) {this.mMessageListener = messageListener;}
}

ok上面我们已经实现了广播接收器,在activity中我们要绑定一个意图过滤器并将此广播注册在destory方法中要将其解除注册

package com.wquant.weilt.controler;import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import com.loopj.android.http.RequestParams;
import com.wquant.weilt.MyApplication;
import com.wquant.weilt.R;
import com.wquant.weilt.control.base.JsonHttpResponseHandlerBase;
import com.wquant.weilt.control.base.MyBaseActivity;
import com.wquant.weilt.reciver.SmsReciver;
import com.wquant.weilt.reciver.SmsReciver.MessageListener;
import com.wquant.weilt.util.CToast;
import com.wquant.weilt.util.CommonUtil;
import com.wquant.weilt.util.Constant;
import com.wquant.weilt.util.HttpUtil;/*** 修改密码* * @author zhaomy* */
public class RestartLoginOrTradPwdActivity extends MyBaseActivity {SmsReciver reciver;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_restart_login_or_trad);init();}private void init() {code = (EditText) findViewById(R.id.register_code);reciver=new SmsReciver();IntentFilter filter = new IntentFilter();// 设置短信拦截参数filter.addAction("android.provider.Telephony.SMS_RECEIVED");//设置最大优先级filter.setPriority(Integer.MAX_VALUE);registerReceiver(reciver, filter);reciver.setOnReceivedMessageListener(new MessageListener() {@Overridepublic void onReceived(String message) {code.setText(message);}});}@Overrideprotected void onPause() {super.onPause();}@Overrideprotected void onDestroy() {unregisterReceiver(reciver);super.onDestroy();}
}

自动填充短信验证码实现方式相关推荐

  1. Android自动填充短信验证码

    自动拦截短信实际上就是在系统注册一个BroadcastReceiver,然后通过设置拦截短信的: filter.addAction("android.provider.Telephony.S ...

  2. 如何让我的应用自动填写短信验证码?

    问题分享 华为开发者论坛上有开发者向我们咨询:想要实现应用自动填写短信验证码,但如果将手机短信"验证码保护"功能打开,app就不能自动填写验证码,有没有什么方法能获取到短信验证码? ...

  3. android短信接收器的实现,可以实现自动填写短信验证码功能

    项目介绍 项目地址: SmsObserverForAndroid 介绍 这是一个用于拦截android实时短信的库,可以进行短信过滤,得到自己想要的内容,可以用于需要自动填写短信验证码的app项目 功 ...

  4. autojs自动获取短信验证码

    AutoJS 是一种基于 JavaScript 的自动化脚本语言,可以用于在 Android 设备上自动化操作. 如果你想使用 AutoJS 自动获取短信验证码,你可以使用 Android 的短信 A ...

  5. web: 手机键盘自动获取短信验证码,点击自动填充输入框

    一.展示效果: IOS手机: autocomplete="one-time-code" <van-field:class="$style.code"v-m ...

  6. android自动接收并填充短信验证码

    这只是部分代码.大家直接拷贝相应代码到自己的activity里对应位置即可. public EditText re_check; private BroadcastReceiver smsReceiv ...

  7. IOS自动获取短信验证码

    小编这里有个自己的学习交流群681+503+716(验证编号:大鲨) * 1.自定义监听类* /** * 短信**,用于自动填充验证码 */ public class SMSContentObserv ...

  8. android 自动获取短信验证码

     很多项目中都会用到,自动获取验证码填到输入框,这样用户体验比较好,废话不多说,现在实现 用的是ContentObserver这个类,帮助我们来监听短信数据库发生的变化 package com.s ...

  9. Android自动获取短信验证码

    一.工具封装 public class GetCodeUtil extends ContentObserver {public static final String SMS_URI_INBOX = ...

最新文章

  1. HTML学习笔记之基本介绍
  2. 自适应分辨率可扩展二层JS下拉菜单
  3. 去掉一个linux的ip,linux – iptables删除除一个IP之外的所有传入ICMP请求
  4. python学习教程,猜数字游戏开发
  5. 【报错笔记】在eclipse中做Spring项目时,创建Spring容器时老是出错
  6. 第2章 数据认知与预处理
  7. JUnit测试方法订购
  8. python文本编辑器报错_notepad++编辑器中运行python程序时需要注意的编码格式
  9. android中的so加固,so加固-加密特定section中的内容
  10. 想起一则急着争权的故事
  11. EasyAr聚焦模式
  12. 计算机 本科专业 课程
  13. 【】论晚睡晚起的危害
  14. 【CircuitPython】RaspberryPi Pico RP2040 自定义机械键盘实例
  15. iPhone X搭载3D感测功能,VCSEL是个什么鬼?
  16. android WebView
  17. python抠图精确到发丝_ps抠图有一些发丝怎么扣
  18. 牛客网输入输出练习c++ 个人版题解
  19. 数字电子技术基础——第一章 绪论(笔记)
  20. 弱校联萌十一大决战之如日中天-C. Cinderella

热门文章

  1. 【#9733;】微信之于QQ的市场哲学
  2. 计算机网络-IP地址
  3. java——Object类、Date类、DateFormat类、Calendar类、包装类
  4. ios12 测试版更新方法
  5. ELECON 轻松掌握 洁净电力
  6. 十道腾讯软件开发工程师面试题
  7. jq分页 不刷新页面_jquery无刷新分页
  8. outlook 设置POP3/IMAP/SMTP服务 (账号密码-授权码)发送、获取授权码
  9. linux写一个最简单的操作系统,自己动手编写一个简单的操作系统
  10. 在Word中用快捷键转换英文字母大小写