Android广播接收短信的简单实现
2015-04-29 16:16
621 查看
说明: 接受短信广播,由Intent解析出短信内容明文, intent中的短信时已pud形式传出的,即byte[][]二位数组,
需要转化出明文SmsMessage.createFromPdu(pdus[i])
广播接收器:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null) {
if (intent.getAction().equals(Intents.SMS_RECEIVED_ACTION)) {
SmsMessage[] msgs = getMessagesFromIntent(intent);
// to use this SmsMessage
String messageBody = "";
for (SmsMessage message : messages) {
messageBody += message.getMessageBody();
}
Log.i("MSG", messageBody);
}
}
}
/**
* Read the PDUs out of an {@link #SMS_RECEIVED_ACTION} or a
* {@link #DATA_SMS_RECEIVED_ACTION} intent.
*
* @param intent
* the intent to read from
* @return an array of SmsMessages for the PDUs
*/
public static final SmsMessage[] getMessagesFromIntent(Intent intent) {
Object[] messages = (Object[]) intent
.getSerializableExtra("pdus");
if (messages == null) {
return null;
}
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]); //解析每一段pdu字节数组,返回解码明文
}
return msgs;
}
}
注意: manifest中声明权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" /> //接收短信必须的权限
<uses-permission android:name="android.permission.READ_SMS"/> //读系统短信权限
<uses-permission android:name="android.permission.WRITE_SMS"/>//写系统短信权限
需要转化出明文SmsMessage.createFromPdu(pdus[i])
广播接收器:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null) {
if (intent.getAction().equals(Intents.SMS_RECEIVED_ACTION)) {
SmsMessage[] msgs = getMessagesFromIntent(intent);
// to use this SmsMessage
String messageBody = "";
for (SmsMessage message : messages) {
messageBody += message.getMessageBody();
}
Log.i("MSG", messageBody);
}
}
}
/**
* Read the PDUs out of an {@link #SMS_RECEIVED_ACTION} or a
* {@link #DATA_SMS_RECEIVED_ACTION} intent.
*
* @param intent
* the intent to read from
* @return an array of SmsMessages for the PDUs
*/
public static final SmsMessage[] getMessagesFromIntent(Intent intent) {
Object[] messages = (Object[]) intent
.getSerializableExtra("pdus");
if (messages == null) {
return null;
}
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]); //解析每一段pdu字节数组,返回解码明文
}
return msgs;
}
}
注意: manifest中声明权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" /> //接收短信必须的权限
<uses-permission android:name="android.permission.READ_SMS"/> //读系统短信权限
<uses-permission android:name="android.permission.WRITE_SMS"/>//写系统短信权限
相关文章推荐
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
- Android广播接收机制详细介绍(附短信接收实现)
- 详解Android短信的发送和广播接收实现短信的监听
- android 广播机制demo(实现短信截取)
- Android项目实现短信的发送、接收和对短信进行拦截
- android广播监听接收和发送短信
- android开机启动接收广播和接收短信广播DEMO
- Android广播事件机制及应用(实现简单的定时提醒功能)
- android 使用广播接收者监听短信和拦截外拨电话
- android基础笔记——广播接收者,实现短信监听
- Android基于广播事件机制实现简单定时提醒功能代码
- Android短信的发送和广播接收者实现短信的监听
- Android中利用广播接受者简单几步实现拨号显示归属地
- Android使用BroadCastRecevier广播实现接收短信,并利用Toast弹出显示内容
- Android:BroadcastReceiver:采用广播接收者实现短信窃听器
- android中的广播接收实现总结 and Android 广播大全
- SMSDemo android 简单拦截短信例子可以实现发 远程控制
- Android创建简单发送和接收短信应用
- Android-服务与广播实现简单电话录音
- Android -- Contentprovider---listview 实现调用通讯录和短信接收