广播接收者

Android 广播接收者

1.广播接收者
广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写:
public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据;
广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图.

广播接受者代码是继承BroadcastReceiver类 在OnReceive中写我们接受到广播后需要做的事

public class SmsBroadCastReceiver extends BroadcastReceiver    
{   

@Override  
public void onReceive(Context context, Intent intent)   
{   
    Bundle bundle = intent.getExtras();   
    Object[] object = (Object[])bundle.get("pdus");   
    SmsMessage sms[]=new SmsMessage[object.length];   
    for(int i=0;i<object.length;i++)   
    {   
        sms[0] = SmsMessage.createFromPdu((byte[])object[i]);   
        Toast.makeText(context, "来自"+sms[i].getDisplayOriginatingAddress()+" 的消息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show();   
    }   
    //终止广播,在这里我们可以稍微处理,根据用户输入的号码可以实现短信防火墙。   
    abortBroadcast();   
}   

} 

广播的注册分为两种动态注册和静态注册,其中两者的区别为:
1)动态注册,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。

2)静态注册,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

代码动态注册:

//生成广播处理   
smsBroadCastReceiver = new SmsBroadCastReceiver();   
//实例化过滤器并设置要过滤的广播   
IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 

//注册广播   
BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter);

静态注册代码(在AndroidManifest.xml中配置广播):

<!--广播注册-->  
    <receiver android:name=".SmsBroadCastReceiver">  
        <intent-filter android:priority="20">  
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
        </intent-filter>  
    </receiver>   

:onReceive方法必须在10秒内完成,如果没有完成,则抛“Application No Response”当广播接收者onReceive方法需要执行很长时间时,最好将此耗时工作通过Intent发送给Service,由Service完成,并且不能使用子线程解决,因为BroadcastReceiver是接收到广播后才创建的,并且生命周期很短,因此子线程可能在没有执行完就已经被杀死了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值