Android短信接收监听、自动回复短信操作例子

定义广播接收器的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 {
 @Override
 public void onReceive(Context context, Intent intent) {
  // TODO Auto-generated method stub
  int 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);
 }
}

(0)

相关推荐

  • Android实现自动提取短信验证码功能

    本文实例讲解了Android自动提取短信验证码解决方案,分享给大家供大家参考,具体内容如下 主要功能及优点 1.收到验证码短信后,自动提取短信中的验证码填写到相应输入框 2.可指定一个号码,只读取与他有关短信,避免提取来源错误 3.利用正则表达式,可匹配各种类型验证码 模块集成关键步骤     将auto_getcode_demo中src包里的SMSContentObserver类复制到你的项目src包中 在SMSContentObserver中:    修改正则表达式内容来匹配自己想要获取的字

  • android读取短信示例分享

    复制代码 代码如下: package com.homer.sms; import java.sql.Date;import java.text.SimpleDateFormat; import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteException;import android.net.Uri;import android.os.Bundle;import

  • Android编程实现定时发短信功能示例

    本文实例讲述了Android编程实现定时发短信功能.分享给大家供大家参考,具体如下: 第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中添加如下内容 <uses-permissionandroid:name="android.permission.SEND_SMS"/> 第二,使用AlarmManager来实现一个倒计时的功能,当时间到时发送短   信.AlarmManager有两个相似的用法: 1.在指定时常

  • Android编程实现拦截短信并屏蔽系统Notification的方法

    本文实例讲述了Android编程实现拦截短信并屏蔽系统Notification的方法.分享给大家供大家参考,具体如下: 拦截短信有几个关键点: 1.android接收短信时是以广播的方式 2.程序只要在自己的Manifest.xml里加有"接收"SMS的权限 <uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission> <uses-p

  • Android实现获取未接来电和未读短信数量的方法

    本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考.具体如下: 一.未读短信   首先注册Observer,当有新短信或彩信来的时候会调用 onChange方法,我们可以在onChange方法中去获取未读短信和彩信,然后做一些UI上的处理! 具体功能代码如下: private ContentObserver newMmsContentObserver = new ContentObserver(new H

  • Android实现发送短信功能实例详解

    本文实例分析了Android实现发送短信功能的方法.分享给大家供大家参考,具体如下: 短信和打电话一样,都是android手机的基本功能,下面以实例说明android如何实现发送短信的功能. 程序如下所示: import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.app.PendingIntent; import android.cont

  • Android发送短信功能代码

    本文实例讲述了Android发送短信功能代码,是进行Android程序开发中非常常见的重要功能.分享给大家供大家参考之用.具体方法如下: // 发送短信 public void sendMsg(){ String content = edtSend.getText().toString(); SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessag

  • android中可以通过两种方式调用接口发送短信

    第一:调用系统短信接口直接发送短信:主要代码如下: 复制代码 代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessage(content); for (String text : divideContents) { smsManager.sendTextMessage("150xxxxxxxx&qu

  • android短信监听工具(示例代码)

    在学习本实例之前,读者请先了解一下android四大组件中的"广播接收者"的基本概念和使用. 由于是"监听程序",所以就不需要建立Activity.这样也算是一种"遮掩"吧.使用BroadcastReceiver,就能达到这"不可告人"的目的.呵呵.当然,使用服务来开发此类应用,更加合适.这里就不再深入讨论"服务"了.本实例仅供学习参考,请勿非法用途. 复制代码 代码如下: package cn.itcas

  • android短信拦截的实现代码

    短信拦截的实现主要是使用了广播接收者来实现. BroadcastReceiver  广播接收者   必须指定要接收的广播类型.必须明确的指定action 广播:事件.普通广播: 是异步的.会广播接收者同时接收,不能被中断sendBroadcast()有序广播: 是同步的.会根据广播接收的优先级进行接收,是可以中断   短信到来广播 sendOrderBroadcast()priority的范围是:-1000 ~ 1000如果有序广播明确的指定了广播接收者,他是无法被中断的. 代码实现如下: 1.

  • Android获取和读取短信验证码的实现方法

    现如今,验证码在Android的客户端还是非常普遍的.通过手机账号和验证码直接去注册应用账户的信息.很多应用都以这种方式来完成注册.简单的介绍一下吧. Android获取短信验证码还是比较简单的,通过Mob官网提供的ShareSDK,调用其中内部的方法,就可以获取到短信的验证码了.提供一下Mob的官网地址.http://www.mob.com/#/在官网上注册相关的信息之后,下载相关的jar包和.so文件就可以实现获取短信验证码了(2.0之前的版本都需要下载jar包和 .so文件,而现在的2.2

  • Android实现短信验证码自动填写功能

    本实例为大家分享了Android实现短信验证码自动填写功能,供大家参考,具体内容如下 实现思路很简单: 1.在需要输入验证码的Activity代码注册监听短信的广播 2.拦截短信,获取其中的验证码 3.回写到EditText private SmsReciver smsReciver = new SmsReciver(); /** 收到短信Action **/ String ACTION_SMS_RECIVER = "android.provider.Telephony.SMS_RECEIVED

随机推荐