安卓基础7:广播接收者

2024-06-09 16:32
文章标签 基础 广播 安卓 接收者

本文主要是介绍安卓基础7:广播接收者,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安卓基础7:广播接收者

广播接收者(broadcastReceiver)

现实中接收广播需满足:1、收音机 2、电池 3、接收频道

Android内部相当于定义好了电台,就是定义好了一些时间(eg:打电话、发短信、电量低、sd卡状态、卸载安装、开机启动)我们开发者只需要注册这个事件就OK;

谷歌开发的三个方向:Javase(java基础)   java me(移动)  javaee(网站开发)

Java me难以开发移动的一些东西,因此谷歌将一些难以开发的东西单独拿出进行封装,方便我们编程;

 

Ip拨号器:

1、 定义一个广播接收者类继承broadcastReceiver(买了一个收音机)

2、 在清单文件中创建receiver标签(买了一个电池)

3、 在receiver标签中设置action节点对需要监听的事件,为(调到合适的频道)

4、 配置权限:


注意:这里配置清单的时候,先要确定监听之后跳转的位置,然后确定监听的事物

代码

描述:我们先在主界面中,设置ip电话前面要加的号码,然后编写捕捉到电话广播后的处理程序;

界面:


事件处理:

主界面:


捕捉广播:

这里的getResultData()获取的是当前广播所传来的数据

设置配置文件

注意:这里需要加打电话的权限

SdCard状态查看器

应用的生命周期基于的是进程,退出仅仅是退出任务栈;而广播的生命周期存在于进程中,一旦部署上去便一直存在。

代码:

描述:我们设置sdcard加载和卸载的广播监听,在监听到之后执行相应操作

事件处理

设置配置文件

注意:需要做一个额外的约束scheme

短信监听器:

不同阶段广播设计

2.3无广播安全设计

4.0后若要广播生效,需要第一次安装的时候有界面;

可以通过app的强行停止去关闭相应进程,从而阻止广播;

 

注意:

配置文件需要额外配置一个约束scheme


代码

事件处理:

”pdus”是关键字,这里pdu是获取一条短信的内容,而“pdus“是获取许多短信的内容;

配置清单:

 

卸载安装事件:

注意: 广播不能直接开启界面,其由任务栈维护,因此为了开启必须加上栈的环境;

代码:

事件处理:

配置清单:

 

开机启动事件:

代码

描述:我们添加一个监听手机开机的事件,在手机开机之后自动调用我们的app,同时屏蔽返回键;

事物处理层:

主界面:

这里我们通过屏蔽onBackPressed方法中的super调用屏蔽返回键

 

启动监听广播

配置清单:

 

Activity是由任务栈维护的,所以在广播中开启任务栈需要加上

intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent2);

不然会报错:

java.lang.RuntimeException:Unable to start receiver com.itheima.boot.BootReceiver:android.util.AndroidRuntimeException: Calling startActivity() from outside ofan Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is thisreally what you want?

注意:这里需要增加一个权限;

自定义广播:

无序广播和有序广播:

概念上的区别:

1、 无序广播:类似于新闻联播,准时开播,没接收到就收不到了;

特点:

a)      不可以被终止

b)     广播不可以被拦截

2、 有序广播:类似中央发红头文件,按照广播接收者的优先级,一级一级往下发

特点:

a)    最终接受者,不用再清单文件中配置;会在最后;收到广播

b)    在广播中途我可通过abortBroadcast()终止广播,但是最终接受者依然会收到广播;

代码上的区别:

有序广播:

1.     不对最后的结果负责,发了就发

2.     通过intent发送数据和接收数据

无序广播:

1.     需要对最后的结果负责,需要有一个回传的广播信息

2.     通过发送广播函数携带信息发送,通过context的getResult获取信息。同时每一级可通过setResult可对下一级信息进行修改;

 

无序广播代码:

广播发送者 

事务处理层:

广播接收者

事物处理层

配置清单文件

有序广播代码:

描述:我们做一个逐级分发大米广播

广播发送者:

发送事件


回传广播接收

注意:这里不需要配置清单文件,因为在广播发送的时候已经指定好了;

广播接收者

事件处理

省接收:

市接收:

乡接收

村民接收:

配置清单

这里通过在文件过滤器中加入属性priority进行优先级分配

特殊广播接收者:

操作特别频繁的广播事件 eg:频繁的锁屏和解锁;这些广播接收者在清单文件里注册是无效的;

对于这种广播时间,需要通过代码的方式去实现接收广播:

 

代码:

注册广播:


这里就是在模拟注册文件的工程,需要注意的是在关闭app时,需要手动关闭注册的广播;

接收广播:

谷歌用意:一旦这样的事件注册生效,若有很多应用定用该广播,则导致很多应用打开,内存消耗很大;

 

样式和主题:

Style:

Theme:

Style “vs” theme

共同点:定义的方式是一样的

不同点:作用范围不一样,样式作用在控件上,主题主要作用在application或者activity上;

注意:定义样式和主题时并不一定要在style下定义,在values下的.xml文件中都可以;

 

安卓下的国际化:

就是在res下创建不同国家的语言环境集;values-en….

对话框

普通对话框


单选对话框


多选对话框



进度条对话框

都可以在子线程更新UI

两种上下文的区别:

getApplicationContext:获取当前应用的上下文,一个应用里,可以有多个activity,getApplicationContext获取所有activity的上下文资源;其生命周期是整个应用;

this:表当前的activity的context资源;其生命周期是当前的界面;

注意:

这两个上下文仅仅在对话框中比较特殊,其他应用都差不多;因为在界面中需要通过将框架显示在某个界面上,若为getApplicationContext则导致编译器不知道如何选择显示界面;

这篇关于安卓基础7:广播接收者的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045700

相关文章

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的