首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓应用安全指南 4.2.3 创建使用广播接收器 高级话题

即使在相同的应用中将广播发送到私有接收器,其他应用中的公共接收器也可能会意外调用。 这就是为什么禁止指定带有意图过滤器定义的exported ="false"。 以下两张图展示了意外调用的发生情况。...然而,当广播接收器仅接收由系统发送的广播意图时,应使用带有意图过滤器定义的exported="false"。 其他组合不应使用。...当广播被传送到所有广播接收器或广播接收器调用abortBroadcast(),广播将消失。 广播被允许由声明了特定权限的广播接收器接收。...因此,当不需要粘性广播时,需要显式调用removeStickyBroadcast()来删除粘滞广播。 此外,带有特定权限的受限的广播接收器无法接收广播。...与粘性广播相同,它不能仅仅允许带有特定权限的广播接收器接收广播。 从广播特性行为的角度来看,上表反过来排列在下面的表中。

1K10

Android安全之应用层安全(五)

每个 Android 应用由四个组件类型的几个组件组成:活动(Activity),服务(Service),广播接收器(Boardcast Reciver)和内容供应器(Content Provider)...最知名的服务示例是在后台播放音乐的媒体播放器,即使用户离开已启动此服务的活动。 广播接收器。 广播接收器是应用的组件,它接收广播消息并根据所获得的消息启动工作流。 内容供应器。...由于没有入口点,所有组件(广播接收器除外,它也可以动态定义)需要由应用的开发人员在AndroidManifest.xml文件中声明。 分离成组件使得我们可以在其它应用中使用组件。...被调用的组件可以被两种不同类型的意图调用。为了显示这些类型的差异,让我们考虑一个例子。例如,用户想要在应用中选择图片。应用的开发人员可以使用显式意图或隐式意图来调用选择图片的组件。...对于第一种意图类型,开发人员可以在他的应用的组件中实现挑选功能,并使用带有组件名称数据字段的显式意图调用此组件。当然,开发人员可以调用其他应用的组件,但是在这种情况下,他必须确保该应用安装在系统中。

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    浅入浅出 Android 安全:第五章 Android 应用层安全

    每个 Android 应用由四个组件类型的几个组件组成:活动(Activity),服务(Service),广播接收器(Boardcast Reciver)和内容供应器(Content Provider)...最知名的服务示例是在后台播放音乐的媒体播放器,即使用户离开已启动此服务的活动。 广播接收器。 广播接收器是应用的组件,它接收广播消息并根据所获得的消息启动工作流。 内容供应器。...由于没有入口点,所有组件(广播接收器除外,它也可以动态定义)需要由应用的开发人员在AndroidManifest.xml文件中声明。 分离成组件使得我们可以在其它应用中使用组件。...被调用的组件可以被两种不同类型的意图调用。为了显示这些类型的差异,让我们考虑一个例子。例如,用户想要在应用中选择图片。应用的开发人员可以使用显式意图或隐式意图来调用选择图片的组件。...对于第一种意图类型,开发人员可以在他的应用的组件中实现挑选功能,并使用带有组件名称数据字段的显式意图调用此组件。当然,开发人员可以调用其他应用的组件,但是在这种情况下,他必须确保该应用安装在系统中。

    54330

    安卓应用安全指南 4.2.2 创建使用广播接收器 规则书

    仅在同一应用内使用的接收器,不应设计为设置意图过滤器。 由于意图过滤器的特性,即使通过意图过滤器调用同一应用中的私有接收器,其他应用的公共私有也可能被意外调用。...4.2.2.2 小心和安全地处理收到的意图(必需) 虽然风险因广播接收器的类型而异,但处理接收到的意图数据时,首先应该验证意图的安全性。...由于公共广播接收器从未指定的大量应用接收意图,它可能会收到恶意软件的攻击意图。 私有广播接收器将永远不会直接从其他应用接收任何意图,但公共组件从其他应用接收的意图数据,可能会转发到私有广播接收器。...对于广播敏感信息,只有可靠的广播接收器可以接收它,而其他广播接收器则不能。 以下是广播发送方法的一些示例。 方法是,通过使用显式意图,将广播仅仅发送给预期的可靠广播接收器,来固定地址。...请注意,粘性广播在 Android 5.0(API Level 21)中已弃用。

    84430

    谷歌大开“吃”戒的产物,Andriod O全球发布

    得知发布后,腾讯WeTest立刻在云真机产品中增加了带有安卓O系统的真机,便于同学们第一时间了解新系统,面对未来的开发更加得心应手。...3、面向专业音频的 AAudio API: AAudio 是一个全新的原生 API,专门为需要高性能、低延迟音频的应用而设计。使用 AAudio 的应用通过卡片信息流读取和写入数据。...③寻找一种使用计划作业实现服务功能的方式。 如果服务未在执行容易立即被用户注意到的操作,一般情况下,您都能够使用计划作业。 ④发生网络事件时,请使用 FCM 选择性地唤醒您的应用,而不是在后台轮询。...3、检查在您应用的清单中定义的广播接收器。 如果您的清单为显式广播声明了接收器,您必须予以替换。...可能的解决方法包括: ①通过调用 Context.registerReceiver() 而不是在清单中声明接收器的方式在运行时创建接收器。 ②使用计划作业检查条件是否会触发隐式广播。

    91420

    Android四大组件:BroadcastReceiver史上最全面解析

    接下来我将一步步介绍如何使用 4.1 自定义广播接收者BroadcastReceiver 继承自BroadcastReceivre基类 必须复写抽象方法onReceive()方法 广播接收器接收到相应广播后...:process="string" > //用于指定此广播接收器将接收的广播类型 //本示例中给出的是用于接收网络状态改变时发出的广播 广播发送者向AMS发送广播 4.3.1 广播的发送 广播是用”意图(Intent)“标识 定义广播的本质:定义广播所具备的“意图(Intent)” 广播发送:广播发送者将此广播的”意图“通过sendBroadcast...; 在广播发送和接收时,增设相应权限permission,用于权限验证; 发送广播时指定该广播接收器所在的包名,此广播将只会发送到此包中的App内与之相匹配的有效广播接收器中。...粘性广播(Sticky Broadcast) 由于在Android5.0 & API 21中已经失效,所以不建议使用,在这里也不作过多的总结。 ---- 5.

    1.9K10

    安卓应用安全指南 4.2.1 创建使用广播接收器 示例代码

    使用广播接收器的风险和对策,根据收到的广播的类型而有所不同。 你可以在以下判断流程中找到你的广播接收器。 接收应用无法检查发送广播的应用的包名称,它是链接伙伴所需的。...表 4.2:广播接收器的类型定义: 类型 定义 私有 只能接收来自相同应用的广播的广播接收器,所以是最安全的 公共 可以接收来自未指定的大量应用的广播的广播接收器 内部 只能接收来自其他内部应用的广播的广播接收器...(),动态注册和注销广播接收器 4.2.1.1 私有广播接收器 私人广播接收器是最安全的广播接收器,因为只能接收到从应用内发送的广播。...: 要点(发送广播): 4) 使用带有指定类的显式意图,来调用相同应用中的接收器。...要点(接收广播): 1) 将导出属性显式设为true。 2) 小心并安全地处理收到的意图。 3) 返回结果时,不要包含敏感信息。 公共广播接收器的示例代码可以用于静态和动态广播接收器。

    50020

    Carson带你学Android:手把手教你学会广播组件-BroadcastReceiver

    使用流程 使用流程如下: 下面,我将一步步介绍如何使用BroadcastReceiver 即上图中的 开发者手动完成部分 5.1 自定义广播接收者BroadcastReceiver 继承BroadcastReceivre...5.2.3 两种注册方式的区别 5.3 广播发送者向AMS发送广播 5.3.1 广播的发送 广播 是 用”意图(Intent)“标识 定义广播的本质 = 定义广播所具备的“意图(Intent)” 广播发送...= 广播发送者 将此广播的“意图(Intent)”通过sendBroadcast()方法发送出去 5.3.2 广播的类型 广播的类型主要分为5类: 普通广播(Normal Broadcast) 系统广播...; 在广播发送和接收时,增设相应权限permission,用于权限验证; 发送广播时指定该广播接收器所在的包名,此广播将只会发送到此包中的App内与之相匹配的有效广播接收器中。...粘性广播(Sticky Broadcast) 由于在Android5.0 & API 21中已经失效,所以不建议使用,在这里也不作过多的总结。 6.

    66510

    Android 四大组件之BroadcastReceiver

    默认情况下,广播接收器运行在主线程中,所以,onReceive() 方法不能执行耗时操作,否则会导致 ANR 异常。 5.2 注册广播接收器 广播接收器的注册分为两种:静态注册、动态注册。...5.3 广播发送及广播类型 广播发送:广播的“发送”与“接收”,表面上看是广播作为 Android 广播机制中的实体,实际上这一实体本身是并不是以所谓的”广播“对象存在的,而是以”意图“(Intent)...定义广播的定义本质,实际就是相应广播”意图“的定义过程,然后通过广播发送者通过 sendBroadcast() 方法将此”意图“发送出去。...发送广播时,指定特定广播接收器所在的包名,具体是通过 intent.setPackage(packageName) 指定,这样此广播将只会发送到此包中的 App 内与之相匹配的有效广播接收器中。...(intent); 5.粘性广播(Sticky Broadcast) 由于在 Android 5.0 & API 21 中已经失效,所以不建议使用,在这里不作阐述。

    1.5K10

    17 个必须掌握的 BroadcastReceiver 知识点「建议收藏」

    自定义广播接收器需要继承基类 BroadcastReceiver ,并实现抽象方法 onReceive ( context, intent ) 。...Android v4 包中提供了 LocalBroadcastManager 类,用于统一处理 APP 局部广播,使用方式与全局广播几乎相同,只是调用注册 / 取消注册广播接收器和发送广播偶读方法时,需要通过...演示: 在和广播接受者相同的 app 里的 MainActivity 添加一个注册按钮 , 用来注册广播接收者 设置意图过滤,添加 Action //onCreate创建广播接收者对象 mReceiver..., 意图添加消息内容, 意图设置 action( … ) 要匹配 , 然后发送广播即可....相比在系统内发送全局广播,它更高效。 1.10 如何让自己的广播只让指定的 app 接收? 在发送广播的 app 端,自定义定义权限, 那么想要接收的另外 app 端必须声明权限才能收到.

    1.7K31

    咦,Oreo怎么收不到广播了?

    通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用以下方法。意图明确,指定了要激活的组件是哪个组件,一般是在相同的应用程序内部实现的。...Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。一般是用于在不同应用程序之间。...具体广播限制和对应赦免清单 如果应用注册了广播接收器,那么每次发送广播后,应用的广播接收器就会消耗资源,如RAM,CPU等。如果有很多应用对系统事件广播注册广播接收器,这....,就会很卡的嘛!...所以从Android 7.0 (API 级别 24)开始,就对广播做了一些限制: API24及以上应用,静态注册的广播接收器无法监听网络变化:android.net.conn.CONNECTIVITY_CHANGE...动态通过调用 Context.registerReceiver()注册广播接收器而不是在清单中声明接收器。 使用JobScheduler,这个网上找一下,有很多教程,就不细说了。

    2K40

    AndroidManifest.xml常用标签属性介绍

    ,大部分被使用到的其他页面也由不同的activity所实现 参数:android:name 说明:代表的是哪个activity 参数:android:exported 作用:是否支持其它应用调用...用来表示意图的行动,android:name=“android.intent.action.MAIN” 标识该Activity为这个APP的起始页面 category 标签 category 标签...) 属性:android:enabled 说明:代表是否允许该广播接收器接受本程序以外的广播 属性:android:exported 说明:代表是否启用这个广播接收器 intent-filter...标签 intent-filter 标签 说明:intent-filter标签可以理解为过滤器,当系统中出现与过滤器中标签相符的广播时,便代表接收到了广播,开始执行广播接收器中的onReceiver...()方法 action 标签 action标签 说明:系统定义的系统广播的“频道”,也可以是自定义的广播的“频道”,想监听什么广播,就添加相应的action标签(注意:一些系统广播是需要声明权限的)

    1.5K20

    Broadcasts详解「建议收藏」

    应用程序也可以发送自定义广播,例如,通知其他应用程序他们关注的事件(如数据下载完成)。 应用程序可以注册广播接收器。当广播被发送时,系统自动将广播传递到已注册接收该广播的应用程序。...– ACTION_NEW_PICTURE – ACTION_NEW_VIDEO Target为Android 7(API 24)及以上的应用程序要接收以下广播,必须在代码中动态注册,在manifest...– CONNECTIVITY_ACTION 从Android 8.0 (API 26)开始,系统对静态注册的广播接收器做了额外的限制。...如果应用程序target为API 26及以上,则不能使用静态注册方式注册大多数隐式广播(不具体针对某个应用程序的广播)。...有关权限和安全的一般信息,请参见 System Permissions。自定义权限是在安装应用程序时注册的。定义自定义权限的应用程序必须安装在使用它的应用程序之前。

    83610

    android学习笔记----ANR

    当Android检测到以下某种情况时,它将显示特定应用程序的ANR对话框: 在5秒内无响应输入事件(如按键或屏幕触摸事件)。 一个 BroadcastReceiver 尚未在10秒内完成执行。...这意味着您的应用程序在UI线程中执行的任何操作都需要很长时间才能完成,因为您的应用程序没有给自己处理输入事件或意图广播的机会。 因此,在UI线程中运行的任何方法都应该在该线程上尽可能少地工作。...BroadcastReceiver 执行时间的具体约束强调广播接收器的意图:在后台进行小的,离散的工作量,例如保存设置或注册 Notification。...因此,与UI线程中调用的其他方法一样,应用程序应避免在广播接收器中进行长时间运行或计算。...但是,与其通过辅助线程执行密集任务,您的应用程序还应该启动IntentService如果需要对意图广播采取可能长时间运行的操作。

    55800

    Android Intent漏洞

    这可用于创建一个代理组件(活动、广播接收器或服务),该组件采用嵌入式意图并将其传递给危险方法,如startActivity()或 sendBroadcast()因此,可以强制应用启动无法直接从其他应用启动的未导出组件...不安全的广播 如果应用使用隐式Intent来传递广播,则可以使用相同的操作注册广播接收器,并从其他应用拦截用户的广播。...例如,假设消息传递服务从服务器请求新消息,并将其传递给负责在用户屏幕上显示这些消息的广播接收器: Intent intent = new Intent("com.victim.messenger.IN_APP_MESSAGE..."); intent.putExtra("from", id); intent.putExtra("text", text); sendBroadcast(intent); 由于隐式广播会传送到设备上注册的每个接收器...,因此可以跨所有应用注册以下广播接收器来拦截用户的广播: AndroidManifest.xml <intent-filter

    63530

    安卓开发_深入理解广播机制

    (百度百科) 二、BroadcastReceiver(广播接收器) 1、自定义BroadcastReceiver 自定义广播接收器继承基类BroadcastReceivre,并实现抽象方法onReceive...自定义广播接收器接收到相应广播后,会自动回调onReceive(context, intent)方法。 onReceive方法中不能执行太耗时的操作。否则将因此ANR。...,即不建议执行耗时操作 注:在广播接收器中创建子线程执行耗时操作也是不建议使用的,因为一旦广播接收器被销毁(太容易被销毁了,生命周期太短),子线程就成为了空线程,很容易被系统杀死 2、自定义BroadcastReceiver...4、发送广播 广播 其实是以 意图(Intent)的形式表示的 发送广播 就是 通过广播发送者将”意图“(意图包含action 附带数据)发送出去。...2、自定义广播 用户自定义的广播,对应自定义的广播接收器 设置感兴趣的ACTION即可 3、有序广播 (1)有序广播,必然就有优先级,广播的优先级为一个整数,范围为-1000~~~+1000  静态注册往往比动态注册的优先级别要高

    1.5K70

    android学习笔记----自定义广播和系统广播

    自定义广播: 无序广播(标准广播): 是一种异步执行的广播,在广播发出之后,所有的广播接收器几乎在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。...android.widget.Toast; public class ReceiveCustomReceiver extends BroadcastReceiver { // 当接收到发送的自定义广播时调用...这是通过在呼叫时提供自己的广播收发器来实现的,它将被视为广播结束时的最终接收器-ITSBroadcastReceiver.onReceive(Context, Intent)方法将使用从其他接收方收集的结果值调用...喜欢sendBroadcast(Intent),此方法是异步的;它将在调用结果tReceiver.onRecept()之前返回。 看见BroadcastReceiver有关意图广播的更多信息。...参数 intent Intent:广播的意图;所有符合这一意图的接收者都将收到广播。 receiverPermission String:字符串命名接收方接收广播时必须持有的权限。

    1.7K20

    B4A编程开发路线001_Android安卓基础

    核心库提供了Java语言API中的大多数功能,既兼容了大多数Java语言所需要调用的功能函数,同时也包含了 Android 的一些核心API,如 android.os、android.net、android.media...如果拥有多个活动、广播接收器或者服务,我们可以使用意图(Intents)来启动各组件,建立更复杂的应用程序。...总之,Android可以使用广播接收器接收有兴趣的广播,或者送出广播使得其他APP知道当前APP的状态改变。...5、意图(Intents) 意图(Intents)是一个启动其他Android活动、服务和广播接收器的异步讯息/信息(要执行某个操作的抽象描述)。...此时,作业系统是使用意图筛选(Intent Filters)来找出可以处理本意图的的最佳组件(或者说活动Activity),例如启动其他活动、告知指定服务启动或停止送出广播。

    1.2K70

    Android四大组件全面解析,夯实基础。

    所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播。...系统收到短信,发出的广播属于有序广播。如果想阻止用户收到短信,可以通过设置优先级,让你们自定义的接收者先获取到广播,然后终止广播,这样用户就接收不到短信了。...动态注册:必须在代码中执行 受activity的生命周期影响 当广播为有序广播时: 同优先级的广播接收器,静态注册优先级高于动态注册 同优先级的同类广播接收器,静态广播:先扫描的优先于后扫描的。...动态广播:先注册得优先于后注册的。 当广播为标准广播时: 无视优先级,动态广播优先于静态广播接收器 同优先级的同类广播接收器,静态广播:先扫描的优先于后扫描的,动态:先注册的优先于后注册的。 6....6.getType() 根据返回的内容URI来返回相应的MIME类型。 而他们每一个方法都带有一个uri参数,这个参数正是调用ConterntResolver的增删改查方法时传递过来的。

    90230
    领券