Android如何通过手机自动获取短信验证码
作者:lijiao 时间:2022-12-10 00:19:47
本文实例为大家分享了Android实现手机自动获取短信验证码功能,供大家参考,具体内容如下
1、短信监听广播
2、读取短信内容
3、截取短信内容【可以 reg截取】
4、填写至相应控件
PS:DevStore测试没有获取到验证码
源码片段
public class MainActivity extends Activity {
private BroadcastReceiver smsReceiver;
private IntentFilter filter2;
private Handler handler;
private EditText et;
private String strContent;
private String patternCoder = "(?<!--\\d)\\d{6}(?!\\d)";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.et);
handler = new Handler() {
public void handleMessage(android.os.Message msg) {
et.setText(strContent);
};
};
filter2 = new IntentFilter();
filter2.addAction("android.provider.Telephony.SMS_RECEIVED");
filter2.setPriority(Integer.MAX_VALUE);
smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Object[] objs = (Object[]) intent.getExtras().get("pdus");
for (Object obj : objs) {
byte[] pdu = (byte[]) obj;
SmsMessage sms = SmsMessage.createFromPdu(pdu);
// 短信的内容
String message = sms.getMessageBody();
Log.d("logo", "message " + message);
// 短息的手机号。。+86开头?
String from = sms.getOriginatingAddress();
Log.d("logo", "from " + from);
Time time = new Time();
time.set(sms.getTimestampMillis());
String time2 = time.format3339(true);
Log.d("logo", from + " " + message + " " + time2);
strContent = from + " " + message;
handler.sendEmptyMessage(1);
if (!TextUtils.isEmpty(from)) {
String code = patternCode(message);
if (!TextUtils.isEmpty(code)) {
strContent = code;
handler.sendEmptyMessage(1);
}
}
}
}
};
registerReceiver(smsReceiver, filter2);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(smsReceiver);
}
/**
* 匹配短信中间的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;
}
}</pre-->
文章末尾为大家在分享两个专题,供大家参考:
《PHP验证码大全》
《ASP.NET验证码大全》
标签:android,验证码
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
windows下C#定时管理器框架Task.MainForm详解
2021-06-06 13:59:06
![](https://img.aspxhome.com/file/2023/0/83240_0s.png)
C#定时器和随机数
2023-10-28 15:30:34
Android中通知栏跳动问题解决方法
2023-05-31 20:16:55
mybatis-plus QueryWrapper自定义查询条件的实现
2023-04-05 20:50:07
Spring Boot 防止接口恶意刷新和暴力请求的实现
2022-05-08 03:54:58
详解android webView独立进程通讯方式
2022-03-04 13:51:18
java排序算法之冒泡排序
2023-04-05 21:03:42
![](https://img.aspxhome.com/file/2023/7/72637_0s.gif)
c#测试本机sql运算速度的代码示例分享
2022-10-18 00:04:24
解决Android Studio4.1没有Gsonfomat插件,Plugin “GsonFormat” is incompatible的问题
2021-08-27 22:10:37
![](https://img.aspxhome.com/file/2023/7/137297_0s.png)
Spring Boot 结合 aop 实现读写分离
2023-09-29 07:53:02
![](https://img.aspxhome.com/file/2023/6/62526_0s.png)
C#自定义函数NetxtString生成随机字符串
2022-06-18 20:43:39
![](https://img.aspxhome.com/file/2023/3/104313_0s.png)
Java四种常用线程池的详细介绍
2021-09-29 17:45:46
java实现递归菜单树
2023-02-01 00:03:06
@TransactionalEventListener的使用和实现原理分析
2022-01-19 06:15:11
Commons beanutils组件简介
2023-11-28 07:13:27
Android实现点击AlertDialog上按钮时不关闭对话框的方法
2022-07-28 07:39:51
C#验证身份证号码正确性的实例代码(收藏)
2023-12-18 17:28:33
JVM分配和回收堆外内存的方式与注意点
2021-07-25 08:53:34
![](https://img.aspxhome.com/file/2023/1/129961_0s.jpg)
Spring初始化与销毁顺序案例演示详解
2021-06-08 14:33:10
![](https://img.aspxhome.com/file/2023/2/78972_0s.png)
Java日常练习题,每天进步一点点(46)
2023-10-05 11:20:29
![](https://img.aspxhome.com/file/2023/0/116190_0s.png)