本节课学习四大组件最后一个, 广播接受者。 顾名思义广播接受者就是接受广播呗。比方在现实社会中,曾经每一个人家都有一台收音机,这可就能够去接受广播发出来的消息。大家都知道。程序世界也是參照的显示生活设计出来的。那在Android系统中也引入了广播这个概念。

那在Android系统中广播有什么作用呢? 举个样例:比方你正在玩游戏或者看视频突然手机电量过低,这时候就会弹出一个框,提醒您手机电量过低,请充电的提示。事实上电量改变就是一种广播类型,当电量过低时。系统就会发生一条广播。这时候正在执行的程序就会收到,同一时候给用户提醒。在Android系统中广播有非常多类型。比方:
开机。关机, 打电话, 发短信,屏幕解锁等。

在举例之前。我们先学会创建一个广播接受者

第一步:

创建一个java类,我取名为MyBroadcastReceiver。同一时候继承BroadcastReceiver

第二步: 当清单文件里注冊(四大组件都须要注冊)

  <receiver android:name="com.ui.broadcastreceiver.MyBroadcaseReceiver"></receiver>

第三步:须要配置你接受那种类型的广播。系统中广播那么多。你得指定你究竟要接受那种类型的广播(比方我们接受电池电量过低的广播)

        <receiver android:name="com.ui.broadcastreceiver.MyBroadcaseReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW"/>
</intent-filter>
</receiver>

第四步:指定接受广播的权限。这个不是每一个广播都必需要做的。 一般侵犯用户隐私的都需要加上权限,比方接受短信广播

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

这种话一个广播接受者就创建成功了。

当系统发送广播的类型正好与你接受的类型一样,这时候我们创建的广播的onReceiver方法就会被调用。

既然学习了怎样创建一个广播接受者。那我们就举例学习接受系统打电话的广播,当用户打电话时就会发出广播,这时候假设注冊接受大电话的广播,就会调用我们的onReceiver方法。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log; public class MyBroadcaseReceiver extends BroadcastReceiver { //当接受到系统打电话的广播后调用
@Override
public void onReceive(Context arg0, Intent arg1) { //得到广播中的电话号码
String number = getResultData();
Log.i("MyBroadcastReceiver", "有电话打出去了,号码是: "+number); }
}

须要到清单文件里去注冊广播接受者。同一时候加上是对那个广告的监听

        <receiver android:name="com.ui.broadcastreceiver.MyBroadcaseReceiver">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>

须要注意的是:须要加上打电话的权限:

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

这时候我们执行起程序后拨打电话:显示效果为:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

是不是非常easy,非常好学。相比Activity。Service以及ContentProvider,广播接受者相比就非常好学。

可是非常好学不代表没用,事实上四大组件都是非常实用的。

最新文章

  1. 介绍,介绍我的底层支持库 Net.Sz.CFramework
  2. 一步步学习 Spring Data 系列之JPA(二)
  3. Unix/Linux进程间通信(二):匿名管道、有名管道 pipe()、mkfifo()
  4. java嵌套类
  5. mysql 源码安装
  6. C#窗体 LISTVIEW
  7. TF Boys (TensorFlow Boys ) 养成记(二)
  8. HDU 5119 Happy Matt Friends
  9. JAVA线程池简介
  10. 【HDOJ】1224 Free DIY Tour
  11. Openjudge-计算概论(A)-奥运奖牌计数
  12. poj 1742 多重背包
  13. Jsp页面输入中文,MYSQL数据库乱码???问题
  14. [Hive_9] Hive 的排序
  15. Slick.js+Animate.css 结合让网页炫动起来
  16. Java内存管理-初始JVM和JVM启动流程(二)
  17. 每次运行caffe代码之前需要考虑修改的地方
  18. 客户端禁用cookie
  19. 解决tomcat使用时catalina.out过大的问题
  20. 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜

热门文章

  1. mysql 新增用户并授权
  2. hdu 5461(分类讨论)
  3. AC日记——教辅的组成 洛谷 P1231
  4. Android之观察者/被观察者模式Observer/Observable
  5. 广播broadcast的使用
  6. [笔记][Web]利用JS生成博文目录及CSS定制博客
  7. Java爬虫系列二:使用HttpClient抓取页面HTML
  8. Network | parity bit
  9. 信号板拼包:数组方式(bug长度只是截短,并未清空,若之后拷贝数据长度小于之前数据长度,老数据会接在后面)
  10. DNS重绑定DNS Rebinding攻击