Android中的广播机制

本文详细介绍了Android中的广播机制,包括如何通过配置文件和代码两种方式注册广播接收器,以及如何处理接收到的广播消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中之所以叫广播机制,其实就类似于我们平常现实生活中的广播,比如当android系统收到一个一条短信时,这时候就会向其他注册了广播并对此广播事件感兴趣的程序发出消息,当别的应用程序收到改广播时,就会对该事件进行一定的处理。

方法一,通过配置AndroidManifest.xml文件,新增

 

<receiver android:name="cn.edu.subclass.MyBroadCastReceiver">
		<intent-filter >
                         <!--action中的标签代表感兴趣的广播,此时我们对接收短信感兴趣-->
			<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
		</intent-filter>
	</receiver>
<uses-permission android:name="android.permission.RECEIVE_SMS" />//加上这一句权限
 

 

 

 此时,如果系统收到短信,就会将广播信息传给该程序,该程序此时在那里处理这个广播呢,这时候我们就需要继承一个类,并重写其中的方法,如下

 

package cn.edu.subclass;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyBroadCastReceiver extends BroadcastReceiver{
	public MyBroadCastReceiver(){
		System.out.println("constructed!");
	}
	@Override
	public void onReceive(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
			System.out.println("OK");
	}

}

当系统收到短信信后就会输出OK,也就是执行上面的onReceive方法

 

方法二:通过代码注册广播

 

package cn.edu.design;

import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import cn.edu.subclass.MyBroadCastReceiver;

public class AndroidBroadCastActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        MyBroadCastReceiver my=new MyBroadCastReceiver();
        IntentFilter filter=new IntentFilter();
        filter.addAction("android.provider.Telephony.SMS_RECEIVED");
        this.registerReceiver(my, filter);

        
    }
}

 

 处理广播的代码:

 

package cn.edu.subclass;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyBroadCastReceiver extends BroadcastReceiver{
	public MyBroadCastReceiver(){
		System.out.println("constructed!");
	}
	@Override
	public void onReceive(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
			System.out.println("OK");
	}

}

 

 方法一和方法二的区别是:方法一在程序关闭的时候,也会收到广播,执行其中的onReceive,方法二只会在程序开启的时候才会接收广播,执行onRecive方法,如果方法二种要移除该广播,可以调用unregisterReciver方法.

注意两种方法都要在AndroidManifest.xml中添加上如下配置信息:

 

 <uses-permission android:name="android.permission.RECEIVE_SMS"/>
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值