android84 广播接受者
#广播接收者(广播接受者进程关闭了也能接收到广播,系统会在清单文件中找哪个广播接受者可以收到这条广播,然后去启动这个接受者的进程,找不到则广播发了就发了没人收到而已) * 现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息 * 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 广播接受者相关推荐
- 【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )
文章目录 一.获取充电状态 二.被动获取充电状态 三.主动获取充电状态 参考 Google 官方文档 : 优化电池续航时间 一.获取充电状态 在应用中执行某些操作 , 如软件云端备份 , 从服务器端获 ...
- Android初级教程IP拨号器初识广播接受者
需求:输入ip号码并且保存在本地,监听打电话广播,如果电话号码以0开头,则加上ip区号拨打. 首先定义一个页面布局: <LinearLayout xmlns:android="http ...
- 黑马Android76期学习笔记01基础--day07--广播,有、无序广播、特殊广播接受者、样式和主题,this与context的区别、普通对话框,进度条对话框、帧动画
1.广播Broadcastreceiver 1.定义一个广播接收者(定义一个类并继承BroadcastReceiver) public class OutGoingCallReveiver exten ...
- Android中利用广播接受者简单几步实现拨号显示归属地
2019独角兽企业重金招聘Python工程师标准>>> 前面已经贴出了实现来电显示归属地的代码,在那个基础了,简单几步,实现拨号时显示归属地 第一步: BroadcastReceiv ...
- BroadcastReceiver广播接受者简单使用
1.注册BrocadcastReceiver <receiver android:name=".FirstReceiver" ><!-- 指定能够接收的广播类型 ...
- 安卓案例:演示广播接受者
目录 一.运行效果 二.实现步骤 1.创建安卓应用BroadcastReceiverDemo 2.准备背景图片bac
- android Hander Service 广播的综合使用案例
android Hander Service 广播的综合使用案例 原理:在主activity里启动一个服务,这个服务通过Handler每一秒发送一条广播,并在主activity里注册一个广播接受者 ...
- Android中广播接收者BroadcastReceiver详解
1. 接收系统的广播步骤 (1) 新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 1 public class SdCardBroadcastReceiver e ...
- Android插件化原理解析——广播的管理
在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力:那么Android系统的其他 ...
- 14_Android中Service的使用,关于广播接收者的说明
服务:长期后台运行的没有界面的组件 android应用:什么地方需要用到服务? 天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息 股票显示:后台的连接服务器的逻辑,每隔一段时间获 ...
最新文章
- 【综述】MV3D-Net、AVOD-Net 用于自动驾驶的多视图3D目标检测网络
- R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例、使用patchwork包实现综合图例
- 利用注解 + 反射消除重复代码(Java项目)
- php 目录限制,限定某个目录禁止解析php,限制user_agent,php相关配置
- 关于内表数据汇总的一些算法
- Kubernetes本地集群和Google Kubernetes Engine的区别
- 图论--最短路-- Dijkstra模板(目前见到的最好用的)
- easyui关机图标_如何在Windows 10中创建关机图标
- Apple Notification Center Service--ANCS【转】
- 2、VMware vCenter Server5.1功能介绍与安装
- pycharm下自建python包引入失败解决方案
- 用oledb导出数据到excel
- 博文视点大讲堂第18期:从草根到巨人——互联网时代的LAMP开源架构
- 大数据技术综合分析!数据采集与预处理
- swot分析法案例_型男收割机之SWOT分析法——大龄剩女脱单攻略
- 《论语别裁》读书笔记
- 笔记本有线及无线的MAC地址修改
- 动画animate的使用
- Js日期函数-Date方法
- Moblin授权中心在台北挂牌开业