简介

Android中的四大组件是 Activity、Service、Broadcast和Content Provider。而Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。那么Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。

实例

在Android中,广播(broadcast)是非常有用的功能。通过广播可以通知其他广播接受这某个事件发生了。比如电源不足,信号不好等。

下面我做了一个简单的demo,首先看看activity(BroadcastTest .java

        
  1. packagecom.android.broadcasttest;
  2. importandroid.app.Activity;
  3. importandroid.content.Intent;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.View.OnClickListener;
  7. importandroid.widget.Button;
  8. publicclassBroadcastTestextendsActivity{
  9. publicstaticfinalStringNEW_LIFEFORM_DETECTED=
  10. "com.android.broadcasttest.NEW_LIFEFORM";
  11. /**Calledwhentheactivityisfirstcreated.*/
  12. @Override
  13. publicvoidonCreate(BundlesavedInstanceState){
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. Buttonbtn0=(Button)findViewById(R.id.btn0);
  17. btn0.setOnClickListener(newOnClickListener(){
  18. publicvoidonClick(Viewv){
  19. Intentit=newIntent(NEW_LIFEFORM_DETECTED);
  20. sendBroadcast(it);
  21. }
  22. });
  23. }
  24. }

在这个activity中生成了一个按钮,当按下按钮的时候通过sendBroadcast()发送一个广播。

我们再看看广播接收者代码:

        
  1. packagecom.android.broadcasttest;
  2. importandroid.content.BroadcastReceiver;
  3. importandroid.content.Context;
  4. importandroid.content.Intent;
  5. importandroid.util.Log;
  6. importandroid.widget.Toast;
  7. publicclassMyBroadcastReceiverextendsBroadcastReceiver{
  8. publicstaticfinalStringBURN=
  9. "com.paad.alien.action.BURN_IT_WITH_FIRE";
  10. publicMyBroadcastReceiver(){
  11. Log.v("BROADCAST_TAG","myBroadCast");
  12. }
  13. @Override
  14. publicvoidonReceive(Contextcontext,Intentintent){
  15. //TODOAuto-generatedmethodstub
  16. Toast.makeText(context,"成功接收广播:",Toast.LENGTH_LONG).show();
  17. }
  18. }

在onReceive()中实现了当接收到广播所做的动作。

我们还需要在AndroidManifest.xml中注册该receiver

        
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.android.broadcasttest"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  7. <activityandroid:name=".BroadcastTest"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <actionandroid:name="android.intent.action.MAIN"/>
  11. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  12. </intent-filter>
  13. </activity>
  14. <receiverandroid:name=".MyBroadcastReceiver">
  15. <intent-filter>
  16. <actionandroid:name="com.android.broadcasttest.NEW_LIFEFORM"/>
  17. </intent-filter>
  18. </receiver>
  19. </application>
  20. <uses-sdkandroid:minSdkVersion="8"/>
  21. </manifest>

在receiver的action中定义了该receiver能够接受的广播。

麻雀虽小,五脏俱全

更多相关文章

  1. Android(安卓)Relative Layout 安卓相对布局详解
  2. android应用程序四大组件
  3. Android(安卓)第七天重置版_BroadCastReceiver
  4. Android(安卓)利用广播实现黑名单【指定号码】的短信的拦截 附源
  5. Android(安卓)自学之列表选择框Spinner
  6. Android(安卓)初始化Setup Wizard——Provision
  7. 三款Android炫酷Loading动画组件推荐
  8. Android(安卓)ListView组件中androiddrawSelectorOnTop含义
  9. Android(安卓)ExoPlayer播放音视频的使用指南

随机推荐

  1. Android软键盘显示模式及打开和关闭方式
  2. 【源码分享下载】Android 智能问答机器人
  3. 【转】android模拟器操作
  4. Android随笔之——Android单元测试
  5. 传智播客—Android(二)数据存储和访问 之文
  6. 远程调试 Android 设备使用入门
  7. Android ConstraintLayout 约束布局详解
  8. Android(安卓)触摸事件大全
  9. Android 存储路径浅析
  10. Android模擬器adb命令介紹