Android跨进程访问(四大组件)- Broadcast Receiver跨进程访问

(1)在应用中接收系统其他应用发出的广播

广播跨进程通讯是一种被动的访问方式。当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。这就象电台进行广播一样,听众只能被动地收听,而不能主动与电台进行沟通。下面就是一个监听系统网络变化的广播接收器,示例代码如下:

public class NetWorkChangeReceiver extends BroadcastReceiver {
	
	@Override
	public void onReceive(Context context, Intent intent) {

		// 获取网络连接信息
		ConnectivityManager manager = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo activeInfo = manager.getActiveNetworkInfo();
		//如果无网络连接
		if(activeInfo == null){
			
			Toast.makeText(context, "网络未连接", Toast.LENGTH_SHORT).show();
		}else{
			Toast.makeText(context, activeInfo.getTypeName()+"网络已连接",
					Toast.LENGTH_LONG).show();
		}
	}
}

这个接收器是在AndroidManifest.xml文件中注册的,示例代码如下:

<receiver android:name=".NetWorkChangeReceiver">
	<intent-filter>
		<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
	</intent-filter>
</receiver>

在注册广播接收器类时使用<action>标签的android:name指定了广播的ID。

上面代码中的android.net.conn.CONNECTIVITY_CHANGE就是网络状态变化时系统发出的广播的Action。

(2)发送广播

在应用程序中发送广播比较简单,只需要调用sendBroadcast(Intent intent)方法即可。参数intent指定了广播的ID,及Action(注册该广播的接收器时使用),通过参数intent还可以发送需要广播的数据。代码示例如下:

				Intent intent = new Intent();
				intent.setAction("com.sarnasea.interprocess.MYBROAD_ACTION");
				intent.putExtra("data", "要广播的数据");
				sendBroadcast(intent);

这样在其他应用中就可以利用设置的Action来注册广播接收器了。

(3)在代码中注册广播接收器

另除了在AndroidManifest.xml中注册之外,还可以在代码中调用registerReceiver(BroadcastReceiver receiver, IntentFilter filter)方法注册广播接收器。其中filter指定注册广播的Action。示例代码如下:

		IntentFilter filter = new IntentFilter(
				"com.sarnasea.interprocess.MYBROAD_ACTION");
		registerReceiver(receiver, filter);

在广播接收器的onReceive回调方法中,可利用其intent参数获取到发送广播时传递的要广播的数据,示例代码如下:

	/**广播接收器*/
	private BroadcastReceiver receiver = new BroadcastReceiver() {
		
		@Override
		public void onReceive(Context context, Intent intent) {
			
			//接收到广播后进行的操作
			String data = intent.getStringExtra("data");
			Toast.makeText(context, data, Toast.LENGTH_SHORT).show();
		}
	};
奋斗 奋斗 奋斗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值