Android 短信接收监听
来源:互联网 发布:好看的网络剧10大排名 编辑:程序博客网 时间:2024/04/30 01:11
本文实现了短信接收监听,当接收到短信时,可自动回复短信,或自动回拨电话,同时监听短信的发送状态
定义广播接收器的Action:
private static final String TAG ="SmsService";/** * 信息发送状态广播 */private static final String ACTION_SMS_SEND = "com.SmsService.send"; /** * 信息接收状态广播 */ private static final String ACTION_SMS_DELIVERY = "com.SmsService.delivery"; /** * 信息接收广播 */ private static final String ACTION_SMS_RECEIVER = "android.provider.Telephony.SMS_RECEIVED";
定义并注册广播接收器,可以动态注册,也可以静态注册:
class SmsReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubint resultCode = getResultCode();if (intent.getAction().equals(ACTION_SMS_RECEIVER)){Log.i(TAG, "SmsReceiver->onReceive");SmsMessage sms = null;Bundle bundle = intent.getExtras();//获取intent中的内容 if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus");//获取bundle里面的内容 for (Object obj : pdus) { //下面两行将短信内容取出加入到message中 sms = SmsMessage.createFromPdu((byte[]) obj); } } mHandler.obtainMessage(MSG_SMS_RECEIVE,sms).sendToTarget();//接收信息发送状态}else if (intent.getAction().equals(ACTION_SMS_SEND)){switch (resultCode) {case Activity.RESULT_OK:Log.i(TAG, "短信发送成功");break;case SmsManager.RESULT_ERROR_GENERIC_FAILURE:Log.i(TAG, "短信发送失败:GENERIC_FAILURE");break;case SmsManager.RESULT_ERROR_NO_SERVICE:Log.i(TAG, "短信发送失败:NO_SERVICE");break;case SmsManager.RESULT_ERROR_NULL_PDU:Log.i(TAG, "短信发送失败:NULL_PDU");break;case SmsManager.RESULT_ERROR_RADIO_OFF:Log.i(TAG, "短信发送失败:RADIO_OFF");break;}//接收信息接收状态}else if (intent.getAction().equals(ACTION_SMS_DELIVERY)){switch (resultCode) {case Activity.RESULT_OK:Log.i(TAG, "短信接收成功");break;case SmsManager.RESULT_ERROR_GENERIC_FAILURE:Log.i(TAG, "短信接收失败:GENERIC_FAILURE");break;case SmsManager.RESULT_ERROR_NO_SERVICE:Log.i(TAG, "短信接收失败:NO_SERVICE");break;case SmsManager.RESULT_ERROR_NULL_PDU:Log.i(TAG, "短信接收失败:NULL_PDU");break;case SmsManager.RESULT_ERROR_RADIO_OFF:Log.i(TAG, "短信接收失败:RADIO_OFF");break;}}}}
这样就实现了短信自动回复功能,当然也可以实现接收到短信自动回拨电话。这里提供一个短信接收函数:
public void doReceiveSms(Intent intent) {Object[] pdus = (Object[]) intent.getExtras().get("pdus");SmsMessage [] messages = new SmsMessage[pdus.length];for(int i=0; i<pdus.length; i++){byte[]pdu = (byte[]) pdus[i];//从pud中创建一个消息messages[i] = SmsMessage.createFromPdu(pdu);}for(SmsMessage msg: messages){//获取短信的内容String content = msg.getMessageBody();//获取发送的人String sender = msg.getOriginatingAddress();//获取短信的时间long timer = msg.getTimestampMillis();//将毫秒数字转换成日期格式Date date = new Date(timer);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH-MM-SS");String time = sdf.format(date);String smsContent = time + ": " + sender + ": " + content;//调用发送短信的方法sendSmsMessage("5556", smsContent);}}短信发送:
public void sendSmsMessage(String phoneNumber, String content){SmsManager smsManager = SmsManager.getDefault();//判断短信内容的长度,如果长度大于70就会出错,所以这步很重要if(content.length() >= 70){List<String> list = smsManager.divideMessage(content);for(String mMsg: list){smsManager.sendTextMessage(phoneNumber, null, mMsg, null, null);}}else{smsManager.sendTextMessage(phoneNumber, null, content, null, null);}}
- Android 短信接收监听
- android广播监听接收和发送短信
- Android 监听短信接收 获取发件号码、短信内容
- Android中短信的收发机制 发送短信 接收短信 拦截短信 监听短信
- 监听接收短信
- 【Android学习日记】(七) 监听短信接收实例
- android 实现监听短信接收并将当前位置发送出去
- 监听接收到的短信
- 短信监听 接收短信 发送短信 SMS监听
- Android拦截短信,接收短信
- android接收短信功能
- android 短信接收
- Android-拦截接收短信
- android 接收短信流程
- Android接收端口短信
- android 短信的接收!
- android短信接收过程
- android短信接收流程
- 使用git如何批量对文件进行rm操作
- 谷歌藏了一个大杀器来消灭碎片化
- 时间问题
- Android GUI Architecture
- 程序中非action获得spring容器
- Android 短信接收监听
- java中"原码,补码,取反"的问题详解
- (5/9)*(f-32)与5*(f-32)/9
- 【冒泡法】
- Eclipse中的svn冲突解决办法:
- Android之Handler & Message
- Unity动画事件
- 人们为什么都喜欢大屏手机
- Myeclipse快捷键以及调试问题问题