image.png

BroadcastReceiver

广播作为四大组件之一,使用方式也是多种多样的,既可以自己在manifest中注册,也可以在java代码中动态注册,既可以接收由系统发出的广播,也可以接受自己定义并发送的广播。

广播可以实现进程内以及跨进程之间的通信。

roadcastReceiver分类

从注册方式上区分:动态注册以及静态注册(显示广播和隐式广播)

从发送方式上区分:无序广播和有序广播

从处理类型上区分:前台广播和后台广播

从运行方式上区分:普通广播和Sticky广播(已弃用)

从发送者区分:系统广播和自定义广播

BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面。

BroadcastReceiver包括两个概念,广播发送者和广播接收者(Receiver),这里的广播实际就是指Intent,程序可以自己发送广播自己接收,也可以接受系统或其他应用的广播或是发送广播给其他应用程序。

发送者可以通过类似Context.sendBroadcast接口发送广播.

接收者通过Context.registerReceiver()动态注册或在AndroidManifest.xml文件中通过标签静态注册.

注册完成后,当发送者发送某个广播时系统会将发送的广播(Intent)与系统中所有注册的符合条件的接收者(Receiver) 的IntentFilter进行匹配,若匹配成功则执行相应接收者的onReceive函数,匹配规则见Intent和IntentFilter的匹配规则。

IntentFilter(Intent过滤器)

一个 Activity 也可以有多个 IntentFilter,相当于多了几个过滤器,被筛选到的可能就更大了。

android:name=".activity.launchmode.SingleTaskActivity"

android:alwaysRetainTaskState="true"

android:label="singleTask"

android:launchMode="singleTask"

android:taskAffinity="top.shixinzhang.task2">

android:host="myapp.mycompany.com"

android:scheme="myapp"/>

IntentFilter 的匹配规则

action 的匹配规则

action 可以理解为一个组件具备功能、可以进行什么操作。系统为我们提供了很多内置的 action,当然也可以自定义。

...

Intent 中的 action 至少有一个与过滤器的匹配,才能调用这个过滤器所在的组件,否则无法命中。

action

名称作用

备注

android.intent.action.MAIN

标识 Activity 为一个程序的开始

-

android.intent.action.CALL

呼叫指定的电话号码

-

android.intent.action.DIAL

用拨号面板

-

andriod.intent.action.ALL_APPS

列出所有的应用

-

android.intent.action.ANSWER

处理呼入的电话

-

android.intent.action.VIEW

显示用户的数据

通用,可以是电话、浏览器等

android.intent.action.SENDTO

发送消息

可以是短信、彩信、邮件等

android.intent.action.EDIT

对给定数据以编辑的形式访问

-

android.intent.action.PICK

从列表中选择信息

一般用于选择联系人或者图片等

android.intent.action.CHOOSER

显示一个Activity选择器

比如常见的选择分享到哪里

category匹配规则

category 即分类,和 action 一样,一个过滤器可以包含多个分类:

...

和 action 匹配规则(有一个匹配即可)不同的是,category 匹配时,要求你的 Intent 中的 category 必须和过滤器中声明的完全匹配。

例,startActivity(intent) 中的 intent 的分类不能是 android.intent.category.DEFAULT 和 android.intent.category.BROWSABLE 以外的。

image.png

data匹配规则

data 表示该组件可以支持的数据格式与类型。

同样,一个过滤器也可以有多个 data:

...

一个 data 由mimeType和scheme组成。

mimeType指的是支持的数据类型与格式,常见的有:

text/plain

image/jpeg

video/*

audio/*

/ 号前面的是数据类型,后面是具体格式。

scheme 就是常见的 URI 格式:

://:/

参数

含义

说明

scheme

协议类型

最重要,协议类型决定了如何访问数据,比如是本地还是网络

host

主机

第二重要,主机地址决定了具体 ip

port

端口

第三重要,一个主机可能有多个网卡端口,有了端口后才能访问到具体

path

具体路径

最后一级,表示要访问的文件夹路径

例如:

http://www.baidu.com:80/search/info

file://emulator/0/sdcard/shixinzhang

scheme 和 mimeType 组成一个 data。而 data 的匹配规则就是:intent 中的 data 至少可以匹配过滤器中的一个。

android注册广播地址,android之注册registerReceiver相关推荐

  1. Android广播管理二--广播注册(registerReceiver)流程分析

    前面分析了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制.因此,使用这种消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息其实就是注册广播接收器. 接下来 ...

  2. Android筑基——BroadcastReceiver 的动态注册、发送和接收过程(基于api21)

    目录 1. 前言 2. 正文 2.1 广播接收者的动态注册 2.1.1 ContextWrapper.registerReceiver() 方法 2.1.2 ContextImpl.registerR ...

  3. android ViewFlipper使用示例(注册引导页)

    其实ViewFlipper工作机制很简单,如上图,就是将添加到ViewFlipper中的子View按照顺序定时的显示是其中一个子View,其他的子View设置为Gone状态.ViewFlipper页面 ...

  4. 云炬Android开发笔记 7登陆注册功能开发

    阅读目录 1.注册UI及验证逻辑实现 1.1 布局 1.2 注册信息的验证和逻辑 2.登录UI及验证逻辑实现 2.1 布局 2.2 登录的逻辑框架 3.服务器数据简单介绍 3.1 服务器的数据 3.2 ...

  5. android 许可协议,Android 基本控件的使用二(注册许可协议)(CheckBox)

    需要注意的是:按钮部分,在复选框选中之前是显示不可点击状态,一旦被选中之后就会变成可点击按钮. 为复选框设置的监听为:setOnCheckedChangeListener 实现的方法有两种: 方法一: ...

  6. android SharedPreferences实现用户的注册和保存账号密码

    在android开发中,我们做用户登录和注册的时候需要将用户名和密码保存,下次打开的时候记住应户名和密码.关于注册保存用户密码的方式和记住用户名和密码的保存方式有多种,这里介绍SharaedPrefe ...

  7. Android NDK之静态/动态注册Native方法

    一.简介 关于NDK有两种方法注册:静态注册和动态注册. 静态注册: 就是直接在Java文件里写个native方法 然后再c/c++文件中实现这个方法就行了: 动态注册: 就是为了不要写很长的方法名, ...

  8. 安卓逆向_15( 三 ) --- Android NDK 开发【 jni 静态注册、JNI_OnLoad 动态注册】

    Android Studio开发JNI示例:https://blog.csdn.net/wzhseu/article/details/79683045 JNI_动态注册_静态注册.zip : http ...

  9. android中注册用户界面,Android用户注册界面

    搜索热词 先给大家展示下界面效果图,感觉满意,请参考实现代码. Main.xml源码 android:layout_width="match_parent" android:lay ...

最新文章

  1. Win7如何快速打开命令提示符
  2. FineReport中以jws方式调用WebService数据源方案
  3. 戏说 Windows GDI (3)
  4. multipath管理存储多路径
  5. 车用TVS管 SM8S系列 国产替代
  6. 虚拟主机选择php版本,虚拟主机的php用什么版本好
  7. abaqus生成adams柔性体_专栏 | HyperMesh_To_Abaqus接口——模型导入导出问题
  8. 均值(信息学奥赛一本通-T1060)
  9. 常用概率论矩阵论公式
  10. 2022爱分析· 业财税一体化厂商全景报告
  11. 堆栈平衡:估计这是最详细的讲解堆栈平衡的了
  12. 接上篇 按键精灵读写远程数据库,达到读写配置以及验证的效果(升级版)
  13. 手写汉字识别程序开发
  14. take credit for用法
  15. Android四大组件之一服务(Service)
  16. 画画怎么配色好看?怎样才能画好色彩搭配?
  17. 如何批量删除多个PDF文档中的一页或多页
  18. 智禾教育:现在入局电商行业算晚吗,行业前景将会如何发展
  19. Sprig的EL表达式和读取Properties文件教程
  20. ExecutorService,Executors 使用

热门文章

  1. 网络安全|渗透测试入门学习,从零基础入门到精通—动态分析技术工具OllyDbg界面介绍
  2. C/C++刷题训练营-第七讲
  3. Vue超好玩的新特性:DOM传送门
  4. GFF高仿QQ客户端及服务器
  5. OpenCV 图像处理学习手册:1~5
  6. python文本分析--停用词表的使用
  7. linux系统hdmi1无信号,电脑HDMI连接电视无信号的解决方法
  8. 教你动手写UDP协议栈 - UDP数据包解析<1>
  9. javaweb——java数据库连接
  10. ARM 在Unity3D 中的美术优化解决方案 5.光照