#广播接收者(广播接受者进程关闭了也能接收到广播,系统会在清单文件中找哪个广播接受者可以收到这条广播,然后去启动这个接受者的进程,找不到则广播发了就发了没人收到而已)
* 现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息
* Android中:系统在运行过程中,会产生会多事件,那么某些事件产生时,比如:电量改变、收发短信、拨打电话、屏幕解锁、开机,系统会发送广播,只要应用程序接收到这条广播,就知道系统发生了相应的事件,从而执行相应的代码。使用广播接收者,就可以收听广播###创建广播接收者
1. 定义java类继承BroadcastReceiver
2. 在清单文件中定义receiver节点,定义name属性,指定广播接收者java类的全类名
<receiver android:name="com.itheima.ipdialer.CallReceiver"><intent-filter ><action android:name="android.intent.action.NEW_OUTGOING_CALL"/></intent-filter></receiver>
3. 在intent-filter的节点中,指定action子节点,action的值必须跟要接受的广播中的action匹配,比如,如果要接受打电话广播,
那么action的值必须指定为<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>* 因为打电话广播中所包含的action,就是"android.intent.action.NEW_OUTGOING_CALL",所以我们定义广播接收者时,action必须与其匹配,才能收到这条广播(系统指定的action,打电话广播是系统创建和发送的)
* 即便广播接收者所在进程已经被关闭,当系统发出的广播中的action跟该广播接收者的action匹配时,系统会启动该广播接收者所在的进程,并把广播发给该广播接收者

Activity:

package com.itheima.ipdialer;import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){EditText et = (EditText) findViewById(R.id.et);SharedPreferences sp = getSharedPreferences("ip", MODE_PRIVATE);sp.edit().putString("ipNumber", et.getText().toString()).commit();}}

广播接受者:

package com.itheima.ipdialer;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;public class CallReceiver extends BroadcastReceiver {//接收到广播时就会调用
    @Overridepublic void onReceive(Context context, Intent intent) {//当拨打电话去往打电话应用的时候系统会发送android.intent.action.NEW_OUTGOING_CALL广播,被这个接受者拦截后给电话号码添加17951//添加IP线路//在打电话广播中,会携带拨打的电话的号码,通过以下代码获取到String number = getResultData();if(number.startsWith("0")){SharedPreferences sp = context.getSharedPreferences("ip", Context.MODE_PRIVATE);String ipNumber = sp.getString("ipNumber", "");//把IP线路号码添加至用户拨打号码的前面number = ipNumber + number;//修改数据后把新的号码重新放入广播中
            setResultData(number);abortBroadcast();//拦截修改后继续后面的操作
        }}}

清单文件:

<applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.itheima.ipdialer.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name=".CallReceiver"><intent-filter ><action android:name="android.intent.action.NEW_OUTGOING_CALL"/></intent-filter></receiver></application>

android84 广播接受者相关推荐

  1. 【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )

    文章目录 一.获取充电状态 二.被动获取充电状态 三.主动获取充电状态 参考 Google 官方文档 : 优化电池续航时间 一.获取充电状态 在应用中执行某些操作 , 如软件云端备份 , 从服务器端获 ...

  2. Android初级教程IP拨号器初识广播接受者

    需求:输入ip号码并且保存在本地,监听打电话广播,如果电话号码以0开头,则加上ip区号拨打. 首先定义一个页面布局: <LinearLayout xmlns:android="http ...

  3. 黑马Android76期学习笔记01基础--day07--广播,有、无序广播、特殊广播接受者、样式和主题,this与context的区别、普通对话框,进度条对话框、帧动画

    1.广播Broadcastreceiver 1.定义一个广播接收者(定义一个类并继承BroadcastReceiver) public class OutGoingCallReveiver exten ...

  4. Android中利用广播接受者简单几步实现拨号显示归属地

    2019独角兽企业重金招聘Python工程师标准>>> 前面已经贴出了实现来电显示归属地的代码,在那个基础了,简单几步,实现拨号时显示归属地 第一步: BroadcastReceiv ...

  5. BroadcastReceiver广播接受者简单使用

    1.注册BrocadcastReceiver <receiver android:name=".FirstReceiver" ><!-- 指定能够接收的广播类型 ...

  6. 安卓案例:演示广播接受者

    目录 一.运行效果 二.实现步骤 1.创建安卓应用BroadcastReceiverDemo 2.准备背景图片bac

  7. android Hander Service 广播的综合使用案例

    android Hander  Service  广播的综合使用案例 原理:在主activity里启动一个服务,这个服务通过Handler每一秒发送一条广播,并在主activity里注册一个广播接受者 ...

  8. Android中广播接收者BroadcastReceiver详解

    1. 接收系统的广播步骤 (1)  新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 1 public class SdCardBroadcastReceiver e ...

  9. Android插件化原理解析——广播的管理

    在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力:那么Android系统的其他 ...

  10. 14_Android中Service的使用,关于广播接收者的说明

     服务:长期后台运行的没有界面的组件 android应用:什么地方需要用到服务? 天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息 股票显示:后台的连接服务器的逻辑,每隔一段时间获 ...

最新文章

  1. 【综述】MV3D-Net、AVOD-Net 用于自动驾驶的多视图3D目标检测网络
  2. R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例、使用patchwork包实现综合图例
  3. 利用注解 + 反射消除重复代码(Java项目)
  4. php 目录限制,限定某个目录禁止解析php,限制user_agent,php相关配置
  5. 关于内表数据汇总的一些算法
  6. Kubernetes本地集群和Google Kubernetes Engine的区别
  7. 图论--最短路-- Dijkstra模板(目前见到的最好用的)
  8. easyui关机图标_如何在Windows 10中创建关机图标
  9. Apple Notification Center Service--ANCS【转】
  10. 2、VMware vCenter Server5.1功能介绍与安装
  11. pycharm下自建python包引入失败解决方案
  12. 用oledb导出数据到excel
  13. 博文视点大讲堂第18期:从草根到巨人——互联网时代的LAMP开源架构
  14. 大数据技术综合分析!数据采集与预处理
  15. swot分析法案例_型男收割机之SWOT分析法——大龄剩女脱单攻略
  16. 《论语别裁》读书笔记
  17. 笔记本有线及无线的MAC地址修改
  18. 动画animate的使用
  19. Js日期函数-Date方法
  20. Moblin授权中心在台北挂牌开业

热门文章

  1. jquery第三期:js与jquery对象转换
  2. 零零散散的一些知识点(二)
  3. 可执行文件的 MD5 碰撞
  4. XStream的几个问题
  5. 项目经理在项目各阶段的工作重点-更新版
  6. python request 接口自动化设计
  7. 【转】运维DBA的4大纪律9项注意
  8. 2016021902 - linux解压缩命令
  9. Enumerator yielder.yield 与 Proc.yield 区别
  10. 漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)