一、创建广播监听短信接收器
public BroadcastReceiver borad = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//super.onReceive(context, intent);
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
Log.v(TAG, ">>>>>>>onReceive start");
// 第一步、获取短信的内容和发件人
StringBuilder body = new StringBuilder();// 短信内容
StringBuilder number = new StringBuilder();// 短信发件人
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] _pdus = (Object[]) bundle.get("pdus");
SmsMessage[] message = new SmsMessage[_pdus.length];
for (int i = 0; i < _pdus.length; i++) {
message[i] = SmsMessage
.createFromPdu((byte[]) _pdus[i]);
}
for (SmsMessage currentMessage : message) {
body.append(currentMessage.getDisplayMessageBody());
String curNumber = number.toString();
if (!curNumber.equals(currentMessage
.getDisplayOriginatingAddress()))
number.append(currentMessage
.getDisplayOriginatingAddress());
}
String smsBody = body.toString();
String smsNumber = number.toString();
if (smsNumber.startsWith("+86")) {
smsNumber = smsNumber.substring(3);
}
// 第二步:确认该短信内容是否满足过滤条件
if (smsNumber.equals("11888") || smsNumber.equals("1069030011888"))
Log.v(TAG, "sms_number.equals(11888)" + smsBody);
int index = smsBody.indexOf("您本次操作的验证码为:");
if (index != -1){
String smsCode = smsBody.substring(index + 11,index + 17);
//authCode.setText(smsCode);
Message msg = new Message();
msg.what = SMSCODE_OK;
msg.obj = smsCode;
handler.sendMessage(msg);
}
}
}
Log.v(TAG, ">>>>>>>onReceive end");
}
}
};
二、注册广播
/**
* 注册接收短信广播
*/
private void regeditBroad(Context context){
IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
context.registerReceiver(borad, intentFilter);
}
三、Handler操作UI控件
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
// 自动填充短信验证码
case SMSCODE_OK:
String sms = (String) msg.obj;
System.out.println("截取到短信验证码: " + sms);
if (sms != null && !sms.equals("")) {
authCode.setText(sms);
getSms.setEnabled(true);
getSms.setText(mcontext.getString(R.string.m_hint_obtain));
}
//注销接收短信广播
destoryBroad();
break;
}
}
}
/**
* 销毁短信广播
*/
private void destoryBroad() {
if (borad != null) {
mcontext.unregisterReceiver(borad);
}
}
相关推荐
Android高级应用源码-广播监听短信并获取短信内容.zip
当系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称“pdus”即可从Intent中获取短信内容。最好使用动态注册的方法,去注册...
android 广播机制的实现,包括静态注册和动态注册,动态示例为获取android的短信广播,并读取短信内容,有些手机需要关闭系统独占短信和网络短信
广播监听短信并获取短信内容.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
2、在广播里面,我们重写的onReceive()方法,通过里面的Intent写到的Bundle就可以拿到短信的内容, 3、清单文件里面我们必须要添加权限,否则无法接收到。 4、为了防止我们的广播接收不到,我们自己写的广播接收器...
Android上监听收到的短信(SMS) 方式一:通过广播监听短信消息 方式二:通过短信数据库获取短信内容
当系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称“pdus”即可从Intent中获取短信内容。最好使用动态注册的方法,去注册...
android实现短信的发送:并广播接收发送状态报告及对方接收状态报告。 android实现短信的发送。
本文实例为大家分享了Android实现手机自动获取短信验证码功能,供大家参考,具体内容如下 1、短信监听广播 2、读取短信内容 3、截取短信内容【可以 reg截取】 4、填写至相应控件 PS:DevStore测试没有获取到验证码 ...
里面涉及到执行Root命令、获取Android开机启动列表、启用主Activity,开启开机自动运行、禁用360进程与服务、动态创建一个优先级最高的短信广播接收者、动态创建一个关机广播接收者。以下分别说明三者的实现: 短信...
今天博主带给小伙伴们一个小功能,就是利用广播接收器实现自动填充短信验证码,话不多说,我们先看看如何去实现这个小功能。 首先我们需要新建一个名为SMSBroadcastReceiver的广播接收器,代码如下: public ...
4、发送短信以及为发送短信设置要监听的广播 遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法:设置发送每条短信为70个字以内。 原理:每条短信限制160字符以内,每个汉字是2个字符。平时我们发送短信...
Android Studio 3.2 读取通话记录姓名,手机号,通话时间,通话记录等源码。
4、发送短信以及为发送短信设置要监听的广播 遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法:设置发送每条短信为70个字以内。 原理:每条短信限制160字符以内,每个汉字是2个字符。平时我们发送短信...
当接收到新短信时,该监听器会被触发,并获取短信内容。 3. **文本到语音转换**:利用Android提供的文本到语音转换API(如TextToSpeech类),将短信内容转换为语音。这通常涉及到配置语音引擎、选择语言和语速等...
4、发送短信以及为发送短信设置要监听的广播遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法:设置发送每条短信为70个字以内。 原理:每条短信限制160字符以内,每个汉字是2个字符。平时我们发送短信
现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: <uses android:name=”android.permission...
利用广播接收器来拦截短信获取其中匹配的内容,提供回掉,将短信内容暴露到activity中实现自动填充 首先我们要实现一个广播接收器 package com.wquant.weilt.reciver; import java.util.regex.Matcher; import java...
相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉.云通讯还有MOB的smssdk,对比之下,最终选择了完全免费的MOB...
短信加密此类功能由于新手学习的需求量较小,所以在网上很少有一些简单的demo供新手参考。...4、发送短信以及为发送短信设置要监听的广播 遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法: