Android广播取得短信内容_广播八

当手机收到短信时,会发出一个与之相关的系统广播——短信广播,表示广播类型的字符串为android.provider.Telephony.SMS_RECEIVED,下面是监听短信

,并且取出收发短信者的电话号码和短信内容的例子

(1)广播监听器类
public class MSGBroadcastReceiver extends BroadcastReceiver {
 public String type="android.provider.Telephony.SMS_RECEIVED";
 @Override
 public void onReceive(Context context, Intent intent)
  //取出短信的电话和内容组成的字符串
  String inf = this.getInf(intent);
  Toast.makeText(context, inf, Toast.LENGTH_LONG).show();
 }
 //返回短信的电话和内容组成的字符串
 private String getInf(Intent intent) {
  if (intent.getAction().equals(type)) {
   /* 创建字符串变量sb */
   StringBuilder sb = new StringBuilder();
   /** 接收由Intent传来的数据 */
   Bundle bundle = intent.getExtras();
   /** 判断Intent有无数据 */
   if (bundle != null) {
    /**
     * pdus为 android内置短信参数 identifier 通过bundle.get("")返回一包含pdus对象ン
     */
    Object[] myOBJpdus = (Object[]) bundle.get("pdus");
    /* 构建短信对象array,并根据收到的对象长度来定义array的大小 */
    SmsMessage[] messages = new SmsMessage[myOBJpdus.length];
    for (int i = 0; i < messages.length; i++) {
     messages[i] = SmsMessage
       .createFromPdu((byte[]) myOBJpdus[i]);
    }
    /* 把传来的短信合并定义在stringbuffer中 */
    for (SmsMessage currentMessage : messages) {
     sb.append("接收到来自:\n");
     /* 发送人电话号码 */
     sb.append(currentMessage.getDisplayOriginatingAddress());
     sb.append("\n------传来的短信------\n");
     /* 取得传来的信息 */
     sb.append(currentMessage.getDisplayMessageBody());
    }
   }
   /* 以(Toase)形式展示 */
   return sb.toString();
  }
  return "";
 }
}
(2)在AndroidManifest.xml文件中注册广播接收器和配置短信权限
<?xml version="1.0" encoding="utf-8"?>
<manifest ......>
 <application ......>
  ......
  <!--注册广播接收器监听短信,短信的广播类型为android.provider.Telephony.SMS_RECEIVED-->
  <receiver android:name="MSGBroadcastReceiver类的包名.MSGBroadcastReceiver">
   <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
   </intent-filter>
  </receiver>
 </application>
 ......
 <!--配置权限-->
 <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值