`

Android4开发入门经典 之 第六部分:Broadcast

 
阅读更多

Broadcast基本概念

Broadcast是什么

是一种能在各个应用程序之间传递数据的机制。类似于现实中的广播体系,有广播方和接收方,双方的关系是多对多的,之间传递的就是Intent对象。
 

Broadcast能做什么

1:实现了不同的程序之间的数据传输与共享,比如我们的应用想要拦截到短信或电话,就可以接收相应的广播,然后进行处理。
2:起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。

Broadcast有什么

1:广播方,就是发出广播的应用
2:接收方,就是接收相应的广播信息并处理的应用
3:Intent对象,广播方和接收方传递数据的对象。
 

Broadcast Receiver示例

在广播方需要做两件事情:一是组织并封装Intent对象;二是发送广播。如下:


java代码:
  1. Intent in = new Intent();  
  2. in.setAction(Intent.ACTION_EDIT);  
  3. in.putExtra("broadcast""test");  
  4. HelloWorldActivity.this.sendBroadcast(in);  
  5. n在接收方需要继承BroadcastReceiver并做广播的相应处理  
  6. public class MyReceiver  extends BroadcastReceiver{  
  7. public void onReceive(Context context, Intent intent) {  
  8. if(intent.getAction().equals(Intent.ACTION_EDIT)){  
  9. Toast.makeText(context, "receiver-"+intent.getExtras().getString("broadcast"),Toast.LENGTH_SHORT).show();  
  10. }else{  
  11. Toast.makeText(context, "receiver-but not edit",Toast.LENGTH_SHORT).show();  
  12. }  
  13. }  
  14. }  

需要在配置文件AndroidManifest.xml中,在activity后,在application之前,注册receiver,同时配置intent-filter,示例如下:


java代码:
  1. <receiver android:name=".MyReceiver">  
  2. <intent-filter>  
  3. <action android:name="android.intent.action.EDIT"/>  
  4. </intent-filter>  
  5. </receiver>  
注意:使用这种方式注册的监听器,无论这个应用是否运行,都能够接收到相应的广播消息。

也可以通过程序来动态的注册receiver,同时配置intent-filter,这样就不需要在配置文件中配置了,示例如下:


java代码:
  1. IntentFilter intentFilter = new IntentFilter();  
  2. intentFilter.addAction(Intent.ACTION_EDIT);  
  3. HelloWorldActivity.this.registerReceiver(new MyReceiver(), intentFilter);  
要记得在发出广播前注册。
可以使用unregisterReceiver方法来取消注册。

接收短信示例

可以使用Broadcast Receiver来接收短信,示例如下:


java代码:
  1. 1:在AndroidManifest.xml中要注册权限:  
  2. <uses-permission android:name="android.permission.RECEIVE_SMS" />  
  3. 2:在MyReceiver上设置IntentFilter  
  4. <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>  
  5. 3:在MyReceiver里面进行短信解析  
  6. Bundle b = intent.getExtras();  
  7. Object[] objs = (Object[])b.get("pdus");  
  8. SmsMessage [] ms = new SmsMessage[objs.length];  
  9.    
  10. for(int i=0;i<ms.length;i++){  
  11. ms[i] = SmsMessage.createFromPdu((byte[])objs[i]);  
  12. Toast.makeText(context.getApplicationContext(),"msg="+ms[i].getDisplayMessageBody(),Toast.LENGTH_SHORT).show();  
  13. }  
  14.    

Broadcast Receiver开发建议

Broadcast Receiver 的生命周期

Broadcast Receiver对象只在执行onReceive方法期间是有效的,每次执行完成,都会被销毁掉,下次接收广播的时候,又会重新创建Receiver对象。

系统内置的Broadcast Receiver可以接收的事件

可以在文档中Intent对象中查找,里面有一个“Standard Broadcast Actions”,这里面的就是可以在Broadcast中使用的。
要确保Intent的命名空间和类名是独有的,不会和其他应用的冲突
如果不希望其他的应用发送的广播被你的Receiver接收到,可以在Receiver上配置android:exported="false"
 


视频配套PPT,视频地址【 Android4开发入门经典独家视频课程
12
5
分享到:
评论

相关推荐

    Android 应用开发入门经典教程

    以上只是《Android应用开发入门经典教程》中部分内容的概述,实际教程会更深入地探讨每个主题,通过实例和练习帮助读者巩固知识,真正掌握Android应用开发。如果你对Android开发感兴趣,这无疑是一份值得深入学习的...

    Android应用开发入门教程(经典版).pdf

    ### Android应用开发入门教程知识点概览 #### 一、Android系统结构与SDK使用 ##### 1.1 系统介绍 - **Android** 是一个基于Linux内核的开放源代码移动操作系统,它由Google公司领导并支持。Android系统的设计目标...

    android开发入门教程PDF(两部)

    这两部PDF教程,"Android开发入门教程"和"Android手机程序电子书开发",都是针对初学者精心编写的指南,旨在帮助他们快速理解和掌握Android应用开发的基础知识。 首先,"Android开发入门教程"可能涵盖了以下几个...

    Android开发入门经典

    ### Android开发入门经典知识点概述 #### 一、Android的基础概念 - **定义**: Android是一种基于Linux内核的开源操作系统,主要用于移动设备。 - **特点**: - 开源性:任何人都可以自由使用并修改其源代码。 - ...

    Android入门到精通源代码.

    第6章 Android菜单和布局设计 6.1 菜单(Menu) 6.1.1 上下文菜单(ContextMenu) 6.1.2 选项菜单(OptionsMenu) 6.1.3 基于XML的菜单结构 6.2 界面布局设计 6.2.1 基于XML的布局设计 6.2.2 线性布局(LinearLayout...

    android开发入门教程

    第9章 我来“广播”你的“意图”——Intent和Broadcast面对面 9.1 Android应用程序的核心——Intent 9.1.1 Intent基础 9.1.2 用Intent启动一个新的Activity 9.1.3 Intent详细讲解 9.1.4 Android解析Intent实现 9.2 ...

    Android开发从入门到精通

    ### Android开发从入门到精通 #### 一、Android概述与发展历程 **Android**是一种基于Linux V2.6内核的综合操作环境,最初由Andy Rubin创立,并于2005年被Google收购。该系统的设计初衷是针对移动电话领域,包括...

    android开发从入门到精通随书源码2-6章

    这份"android开发从入门到精通随书源码2-6章"的压缩包文件为我们提供了宝贵的实践资源,帮助开发者深入理解Android应用开发的核心概念和技术。下面将详细解析其中涉及的主要知识点。 第一章通常会介绍Android开发...

    Android应用开发入门教程

    ### Android应用开发入门教程知识点详解 #### 一、Android系统结构和SDK使用 **1.1 系统介绍** Android操作系统是由Google公司主导开发的一款基于Linux内核的开放源代码移动设备操作系统。它最初是为了智能手机和...

    Android开发入门介绍

    ### Android开发入门介绍 在移动互联网时代,Android作为全球最大的移动操作系统之一,其应用开发的重要性不言而喻。本文将围绕“Android开发入门介绍”这一主题展开,旨在为初学者提供一个全面的基础知识体系,...

    Android开发入门与实战源码

    首先,我们来看"Android开发入门"这部分。入门阶段,开发者通常需要了解Android系统的基本结构,包括Activity(活动)、Intent(意图)、Service(服务)、Broadcast Receiver(广播接收器)以及Content Provider...

    Android开发入门书籍

    **1.4 检查第一个项目(Chapter 4: Examining Your First Project)** - **知识点:** - 分析主Activity代码 - 布局文件解析 - 使用资源(字符串、图片等) - 基础事件处理 **1.5 关于Eclipse(Chapter 5: A ...

    android 开发入门教程 从配置环境开始

    Android开发入门教程从配置环境开始,是一套针对初学者精心设计的教程,旨在帮助零基础的学员快速掌握Android应用开发的基础知识。本教程分为十二个章节,内容涵盖全面,逐步引导学习者进入Android开发的世界。 第...

    Google.Android开发入门与实战

     《Android开发入门与实战》内容上涵盖了用Android开发的大部分场景,从Android基础介绍、环境搭建、SDK介绍、Market使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上,讲解了5个Android平台下的完整综合...

    《Android项目驱动式开发教程》第一章开发入门.pptx

    【Android项目驱动式开发教程】第一章主要介绍了...总结起来,本章主要介绍了Android的发展历程,核心组成部分,以及搭建Android开发环境和创建第一个应用的基础步骤。对于初学者来说,这是了解Android开发的关键起点。

    Android高薪之路:Android程序员面试宝典 李宁

    第6章 数据库 6 1 SQLite基础知识 6 2 SQLite 函数 6 2 1 核心函数 6 2 2 日期和时间函数 6 2 3 聚合函数 6 3 在Android中使用SQLite 6 4 面向对象数据库:db4o 第7章 网络与加密 7 1 客户端Socket 7 2 服务端Socket...

    Google Android开发入门与实战.part2.rar

    一次只能传15MB,书太大,分三部分,第二部分 共17章 1、初识android 2、搭建android开发环境 3、androidSDK介绍 4、android market及应用发布 5、第一个应用Hello World 6、android应用程序结构介绍 7、良好的学习...

    Google Android开发入门与实战.part3.rar

    一次只能传15MB,书太大,分三部分,第三部分 共17章 1、初识android 2、搭建android开发环境 3、androidSDK介绍 4、android market及应用发布 5、第一个应用Hello World 6、android应用程序结构介绍 7、良好的学习...

Global site tag (gtag.js) - Google Analytics