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

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

即使在相同的应用中将广播发送到私有接收器,其他应用中的公共接收器也可能会意外调用。 这就是为什么禁止指定带有意图过滤器定义的exported ="false"。 以下两张图展示了意外调用的发生情况。...从安全角度来看,问题是应用 A 对同一应用中的私有接收器调用。 当应用 A 广播隐式意图,不仅是相同应用中的私有接收器,而且具有相同意图过滤器定义的公共接收器(B-1)也可以接收意图。...然而,当广播接收器仅接收由系统发送的广播意图,应使用带有意图过滤器定义的exported="false"。 其他组合不应使用。...这是基于这样一个事实,即系统发送的广播意图可以通过exported="false"来接收。 如果其他应用发送的意图的ACTION与系统发送的广播意图相同,则可能会通过接收它而导致意外行为。...因此,当不需要粘性广播,需要显式调用removeStickyBroadcast()来删除粘滞广播。 此外,带有特定权限的受限的广播接收器无法接收广播

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

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

广播发出之后,同一刻只有一个广播接收器能够收到这条广播消息,当其逻辑执行完后该广播接收器才会继续传递。...Android v4 包中提供了 LocalBroadcastManager 类,用于统一处理 APP 局部广播,使用方式与全局广播几乎相同,只是调用注册 / 取消注册广播接收器和发送广播偶读方法,需要通过..., 意图添加消息内容, 意图设置 action( … ) 要匹配 , 然后发送广播即可....1.7 本地广播 本地广播机制使得发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接受来自本应用程序发出的广播,则安全性得到了提高。...接受广播 注册广播接收器,增加相应的 permission ,用于权限验证。 注册广播接收器,设置 android:exported 的值为false。

1.4K31

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

仅在同一应用内使用的接收器,不应设计为设置意图过滤器。 由于意图过滤器的特性,即使通过意图过滤器调用同一应用中的私有接收器,其他应用的公共私有也可能被意外调用。...4.2.2.2 小心和安全地处理收到的意图(必需) 虽然风险因广播接收器的类型而异,但处理接收到的意图数据,首先应该验证意图的安全性。...对于广播敏感信息,只有可靠的广播接收器可以接收它,而其他广播接收器则不能。 以下是广播发送方法的一些示例。 方法是,通过使用显式意图,将广播仅仅发送给预期的可靠广播接收器,来固定地址。...当它发送给同一个应用中的广播接收器通过Intent#setClass(Context, Class)指定地址。...当它发送到其他应用中的广播接收器通过Intent#setClassName(String, String)指定地址。

80430

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

} 5.2 广播接收器注册 注册的方式分为两种:静态注册、动态注册 5.2.1 静态注册 注册方式:在AndroidManifest.xml里通过****标签声明 属性说明: <receiver...= 广播发送者 将此广播的“意图(Intent)”通过sendBroadcast()方法发送出去 5.3.2 广播的类型 广播的类型主要分为5类: 普通广播(Normal Broadcast) 系统广播...Intent.ACTION_SHUTDOWN 重启设备 Intent.ACTION_REBOOT 注:当使用系统广播,只需要在注册广播接收者定义相关的action即可,并不需要手动发送广播,当系统有相关操作时会自动进行系统广播...; 在广播发送和接收,增设相应权限permission,用于权限验证; 发送广播指定该广播接收器所在的包名,此广播将只会发送到此包中的App内与之相匹配的有效广播接收器中。.../取消注册广播接收器和发送广播将参数的context变成了LocalBroadcastManager的单一实例 注:对于LocalBroadcastManager方式发送的应用内广播,只能通过LocalBroadcastManager

63110

Android基础总结(4)——广播接收器

2、广播接收器的使用方法   Android系统内置了很多系统级别的广播,我们可以在应用程序通过监听这些广播来得到各种系统的状态信息。...此外,还有一点非常重要的是,android系统为了保证应用程序的安全性做了规定,如果程序中需要访问系统的关键性信息,必须在配置文件中声明权限才行,否则程序将会直接崩溃,比如像上面的查询网络状态就需要声明权限...那么设定广播的先后顺序是根据广播的优先级来判断的,我们可以在AndroidManifest.xml中注册广播接收器通过android:priority属性来设置优先级。...,我们可以在我们的广播接收器中的onReceive()方法的逻辑中对该广播进行截断,截断广播的方法也很简单,直接调用abortBroadcast();方法就可以了。...使用本地广播:Android引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播

1K100

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

动态注册:也称为运行时注册,也就是在Service或者Activity组件中,通过Context.registerReceiver()注册广播接收器。...此类广播接收器是在应用已启动后,通过代码进行注册。 两种类型 显式广播(Explicit Broadcast):发送的Intent是显示Intent的广播。...通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用以下方法。意图明确,指定了要激活的组件是哪个组件,一般是在相同的应用程序内部实现的。...Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。一般是用于在不同应用程序之间。...简要介绍适配/解决方法 按照官方推荐,对于隐式广播通过以下方法进行替换。 动态通过调用 Context.registerReceiver()注册广播接收器而不是在清单中声明接收器

1.9K40

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

,每一个Dalvik应用作为一个独立的Linux进程执行,这样可以防止某一虚拟机崩溃所有的应用都被关闭。...Android APP(安卓应用程序)不一定四种组件(元件)都有。如果拥有多个活动、广播接收器或者服务,我们可以使用意图(Intents)来启动各组件,建立更复杂的应用程序。...3、广播接收器(Broadcast Receivers) 在 Android APP中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。...总之,Android可以使用广播接收器接收有兴趣的广播,或者送出广播使得其他APP知道当前APP的状态改变。...5、意图(Intents) 意图(Intents)是一个启动其他Android活动、服务和广播接收器的异步讯息/信息(要执行某个操作的抽象描述)。

80570

Android 四大组件之BroadcastReceiver

intent-filter/action ——用于指定此广播接收器将接收的广播类型,本示例中给出的是用于接收网络状态改变发出的广播。...定义广播的定义本质,实际就是相应广播意图“的定义过程,然后通过广播发送者通过 sendBroadcast() 方法将此”意图“发送出去。...当使用系统广播,只需在注册广播接收者定义相关的action即可,不需要手动发送广播,当系统有相关操作时会自动进行系统广播的发送。 ?...发送广播,指定特定广播接收器所在的包名,具体是通过 intent.setPackage(packageName) 指定,这样此广播将只会发送到此包中的 App 内与之相匹配的有效广播接收器中。...使用封装好的 LocalBroadcastManager 类使用方式上与全局广播几乎相同,只是注册/取消注册广播接收器和发送广播将参数的 context 变成了 LocalBroadcastManager

1.3K10

《移动互联网技术》第八章 消息与服务:掌握不同类型广播监听方式,以及创建通知的方法

接着,创建广播接收器NetworkChangeReceiver,把接收器和动作过滤器通过registerReceiver 函数绑定在一起,完成动态注册。...当用户切换到另外的应用场景,Service仍然持续在后台运行。但是,服务离不开应用程序,当某个应用程序进程被杀掉,所有依赖于该进程的服务也会停止运行。...(2) PendingIntent 与Intent 采用Intent无法实现通过点击通知来打开活动界面,因为使用Intent系统会马上执行“意图”,并启动活动界面(执行action)。...而收到通知,用户不会立刻打开通知对应的活动界面,他们可以选择在任何时间来查看。因此,要实现通知点击处理,需要用到另外一个意图:PendingIntent。...5秒,系统就会弹出应用程序无响应的警告信息对话框,造成程序崩溃,严重影响用户体验。

6810

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

4.2.2 动态注册 在代码中通过调用Context的registerReceiver()方法进行动态注册BroadcastReceiver @Override protected void onCreate...4.3 广播发送者向AMS发送广播 4.3.1 广播的发送 广播是用”意图(Intent)“标识 定义广播的本质:定义广播所具备的“意图(Intent)” 广播发送:广播发送者将此广播的”意图通过sendBroadcast...Intent.ACTION_SHUTDOWN 重启设备 Intent.ACTION_REBOOT 注:当使用系统广播,只需要在注册广播接收者定义相关的action即可,并不需要手动发送广播,当系统有相关操作时会自动进行系统广播...; 在广播发送和接收,增设相应权限permission,用于权限验证; 发送广播指定该广播接收器所在的包名,此广播将只会发送到此包中的App内与之相匹配的有效广播接收器中。...通过intent.setPackage(packageName)指定报名 具体使用2 - 使用封装好的LocalBroadcastManager类 使用方式上与全局广播几乎相同,只是注册/取消注册广播接收器和发送广播将参数的

1.5K10

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

原因如下: (1)广播接收器的生命周期是非常短暂的,当广播接收器接收到广播开始创建,而执行完onReceive(context,intent)方法后就销毁 (2)默认情况下,广播接收器也是运行在UI线程中的... 应用程序退出之后,相应的广播接收器是否还能接受广播的情况(比如一个应用程序里有一个广播接收器接收是“收到短信”的广播,当应用程序退出后,还能收到这个广播么?)...在发送广播,不管是什么广播类型(系统广播),系统默认增加了值为FLAG_EXCLUDE_STOPPED_PACKAGES(不包含已经停止的包)的FLAG, 导致即使是静态注册的广播接收器,对于其所在进程已经退出的应用程序...4、发送广播 广播 其实是以 意图(Intent)的形式表示的 发送广播 就是 通过广播发送者将”意图“(意图包含action 附带数据)发送出去。...可以设置指定接收广播应用程序的包:Intent.setPackage("com.xqx.app") 2、接收广播 ,设置可以接收的广播的权限,Context.registBroadcast(Intent

1.4K70

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

自定义广播: 无序广播(标准广播): 是一种异步执行的广播,在广播发出之后,所有的广播接收器几乎在同一刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。...这是通过在呼叫提供自己的广播收发器来实现的,它将被视为广播结束的最终接收器-ITSBroadcastReceiver.onReceive(Context, Intent)方法将使用从其他接收方收集的结果值调用...参数 intent Intent:广播意图;所有符合这一意图的接收者都将收到广播。 receiverPermission String:字符串命名接收方接收广播必须持有的权限。...,或者其他应用程序向我们的广播接收器里发送各种垃圾广播。...2、全局广播:发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册

1.5K20

Android知识点基础篇(一)

onTerminate()程序终止的时候执行,当程序是被内核终止以便为其他应用程序释放资源,不会被调用。 onLowMemory()低内存的时候执行。...可以用来释放一些不必要的资源来应对后台程序已经终止,前台应用程序内存还不够的情况。...客户端通过调用startService(Intent) 发送请求,该Service根据需要启动,使用工作线程处理依次每个Intent,并在停止工作停止自身。它时常用来处理一次性请求的服务。...ContentProvider将数据发布出来,通过ContentResolver(数据调用者)对象调用ContentOrovider的增删改查。 8....标准广播发出后,所有接收器都能够接收到,并且接收器无法终止或干扰其他接收器接收。而有序广播在发出的同一刻,只会有一个广播接收器能够接受,并且自行决定是否传递给下一个。 9.

54340

Broadcasts详解「建议收藏」

应用程序也可以发送自定义广播,例如,通知其他应用程序他们关注的事件(如数据下载完成)。 应用程序可以注册广播接收器。当广播被发送,系统自动将广播传递到已注册接收该广播应用程序。...静态注册广播接收器 如果你在manifest中注册一个广播接收器,且应用程序没有运行,系统就会在广播发送启动你的应用程序。...然后,广播接收器就成为应用程序的一个单独的入口点,即如果应用程序当前没有运行,系统可以通过广播启动应用程序。系统将创建一个新的BroadcastReceiver组件对象来处理每个接收到的广播。...(); 2、 创建一个IntentFilter,通过调用代码registerReceiver(BroadcastReceiver,IntentFilter)注册广播接收器: IntentFilter filter...你也可以通过调用setPackage(String)限制广播的接收者。 广播的权限设置 通过设置广播的权限,有特定权限的APP才能接收此广播。您可以对广播的发送方或接收方执行权限限制。

75210

android学习笔记----ANR

这意味着您的应用程序在UI线程中执行的任何操作都需要很长时间才能完成,因为您的应用程序没有给自己处理输入事件或意图广播的机会。 因此,在UI线程中运行的任何方法都应该在该线程上尽可能少地工作。...如果这样做,您应该通过调用将线程优先级设置为“后台”优先级Process.setThreadPriority() 并且通过 THREAD_PRIORITY_BACKGROUND。...BroadcastReceiver 执行时间的具体约束强调广播接收器意图:在后台进行小的,离散的工作量,例如保存设置或注册 Notification。...因此,与UI线程中调用的其他方法一样,应用程序应避免在广播接收器中进行长时间运行或计算。...但是,与其通过辅助线程执行密集任务,您的应用程序还应该启动IntentService如果需要对意图广播采取可能长时间运行的操作。

51700

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

: 要点(发送广播): 4) 使用带有指定类的显式意图,来调用相同应用中的接收器。...公共广播接收器是可以从未指定的大量应用程序接收广播广播接收器,因此有必要注意,它可能从恶意软件接收广播。...要点(接收广播): 1) 将导出属性显式设为true。 2) 小心并安全地处理收到的意图。 3) 返回结果,不要包含敏感信息。 公共广播接收器的示例代码可以用于静态和动态广播接收器。...当向公共广播接收器发送广播,需要注意广播可以被恶意软件接收。...9) 导出 APK ,使用与发送应用相同的开发人员密钥对 APK 进行签名。 内部广播接收器的示例代码可用于静态和动态广播接收器

45320

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

广播接收器广播接收器是应用的组件,它接收广播消息并根据所获得的消息启动工作流。 内容供应器。 内容供应器是为应用提供存储和检索数据的能力的组件。 它还可以与另一应用共享一组数据。...由于没有入口点,所有组件(广播接收器除外,它也可以动态定义)需要由应用的开发人员在AndroidManifest.xml文件中声明。 分离成组件使得我们可以在其它应用中使用组件。...在这种情况下,被调用的服务调用其方法onStart。 当开发人员要在组件和服务之间建立连接,它调用bindService方法,并在被调用的服务中调用onBind方法。...当应用或系统组件使用sendBroadcast,sendOrderedBroadcast和sendStickyBroadcast方法发送特殊消息,将启动广播接收器。...内容供应器由来自内容解析器的请求调用。所有其他组件类型通过Intent(意图)激活。 意图是 Android 中基于Binder框架的特殊通信手段。意图被传递给执行组件调用的方法。

97520

Android面试题(四大组件篇)

可以直接调用到Service中的方法,如果要主动通知Activity,我们可以利用回调方法 Service向Activity发送消息,可以使用广播,当然Activity要注册相应的接收器。...这些允许您在将来的某个时间点运行应用程序。当警报响起,系统会广播已注册的意图,如果目标应用程序尚未运行,则自动启动它。...广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。 动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。...静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发也会对它起作用。...(1)android平台提供了ContentProvider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。

86620
领券