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

Android-浅谈广播机制,实现强制下线功能

标准广播: 是一种完全异步执行的广播,在广播发出之后,所有的广播接收器都会在同一时间接收到这条广播消息,因此他们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。...有序广播: 是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播消息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有前后顺序的。...当有广播到来时,onReceive方法就会执行。具体的逻辑就可以在这个方法中处理。广播的详细使用请参阅这里 本文通过一个强制下线的例子来简单说明广播的使用。...,首先将 LoginActivity 的继承结构改为继承自 BaseActivity ,然后调用了 findViewById() 方法分别获取到输入框中的信息,然后再登录按钮里使用了一个简单的...由于广播接收器需要弹出一个对话框来阻塞用户的正常操作,但如果创建的是一个静态注册的广播接收器,是没有办法在 onReceive() 方法里弹出对话框的这样的UI操作的,而我没问显然也不可能在每个活动中都去注册一个动态的广播接收器

92130

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

即使在相同的应用中将广播发送到私有接收器,其他应用中的公共接收器也可能会意外调用。 这就是为什么禁止指定带有意图过滤器定义的exported ="false"。 以下两张图展示了意外调用的发生情况。...然而,当广播接收器仅接收由系统发送的广播意图时,应使用带有意图过滤器定义的exported="false"。 其他组合不应使用。...因此,当不需要粘性广播时,需要显式调用removeStickyBroadcast()来删除粘滞广播。 此外,带有特定权限的受限的广播接收器无法接收广播。...与粘性广播相同,它不能仅仅允许带有特定权限的广播接收器接收广播。 从广播特性行为的角度来看,上表反过来排列在下面的表中。...然而,缺少权限导致接收/发送方的错误时,将输出错误日志。 由广播发送的意图信息包含在错误日志中,因此在发生错误之后,需要注意,发送广播时,意图的信息显示在LogCat中。

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

    全局事件-广播(Broadcast)

    ,可以从Bundle.keySet()方法中获取这些数据的key,将其输出到Logcat中查看,如上述代码所示 由于接受的短信内容是以字节数组的形式保存的,为了方便使用这些数据,需要使用SmsMessage.createFromPdu...必须要指定 我们编写的短信接收器才可以接收系统的短信广播,切记 配置权限android.permission.RECEIVE_SMS 即使注册广播接收器的程序关闭,接收器仍然会接收到广播,除非从模拟器或者手机中卸载程序或者注销接收器...,否则无法阻止接收器接收广播 ---- 用代码注册广播接收器 如果在清单文件中配置广播接收器,程序安装后就会自动注册广播接收器,如果想在适当的时候注册广播接收器,在使用完成之后将其注销就需要使用Java...广播的优先级只是对同步处理方式起作用,如果在接收器中使用了异步处理方式,则调用的顺序除了和优先级有关,还和Android系统的线程调用有关。...来电可以分解为3个状态:未接电话时的响铃,接听电话 和挂断电话(可能是对方挂断,也可能是自己挂断) 监听这三个状态的代码如下(使用静态方式注册的广播): CallInReceiver: package

    1.1K60

    Android 全局广播的使用

    我们也可以在自己得应用程序中发送广播信息,一些能够接受到特定的广播信息的广播接收器就能够接收到对应的广播信息。进而进行事件处理,那么首先我们来看一下广播的基本使用方法。...广播接收器在使用之前必须要先注册,注册广播接收器可以采用静态注册和动态注册两种方式。...对象中的setAction方法中的参数时,这个广播信息才能被这个广播接收器接收到(其实就是发送广播的Intent对象的动作类型能够在注册广播时的IntentFilter对象中存在相同的动作类型时,这个广播接收器才能接收到这个...上面的程序我们采用了使用代码动态注册广播接收器的方法注册广播接收器,并且我们在我们自己的程序中发送广播信息,我们接着来看一下静态广播注册,假设我们要程序在系统启动完成之后,弹出“弹出系统启动完成”提示信息...} } 我们添加了一个广播接收器的内部类,并且实现了onReceive方法,并且在注册广播接收器的时候在IntentFilter的对象中设置了优先级属性,在发送广播的时候使用了sendOrderBroadcast

    2K10

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

    使用广播接收器的风险和对策,根据收到的广播的类型而有所不同。 你可以在以下判断流程中找到你的广播接收器。 接收应用无法检查发送广播的应用的包名称,它是链接伙伴所需的。...: 要点(发送广播): 4) 使用带有指定类的显式意图,来调用相同应用中的接收器。...5) 敏感信息可以发送,因为目标接收器在相同应用中。 6) 小心并安全地处理收到的返回结果,即使数据来自相同应用中的接收器。...9) 导出 APK 时,使用与发送应用相同的开发人员密钥对 APK 进行签名。 内部广播接收器的示例代码可用于静态和动态广播接收器。...14) 需要接收器的内部签名权限。 15) 小心并安全地处理收到的结果数据。 16) 导出 APK 时,请使用与目标应用相同的开发人员密钥对 APK 进行签名。

    50020

    【Android学习】Android广播机制

    在Android中实现广播,首先我们要在Manifest.xml文件中配置一个标签,这个标签必须有一个android:name属性,值为继承自BroadcastReceiver类的接收器类...这个标签还有一个子标签为,这个标签很重要,是指定接收器需要接收哪种广播。...另外,还有配置一个用户权限:,具体的值可以参考官方API文档。...另外一个比较重要的步骤是必须有一个类继承自BroadcastReceiver类,并复写onReceiver方法,在该方法中处理接收到广播后需要处理的事情!...下面来看一个具体的例子,有助于更好的理解广播机制是怎么一回事。 UI部分就不说了,Activity上就加了一个按钮,点击后发送广播。接收器接收到广播后在终端输出一句话。

    46520

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

    自定义广播: 无序广播(标准广播): 是一种异步执行的广播,在广播发出之后,所有的广播接收器几乎在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。...,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。...这是通过在呼叫时提供自己的广播收发器来实现的,它将被视为广播结束时的最终接收器-ITSBroadcastReceiver.onReceive(Context, Intent)方法将使用从其他接收方收集的结果值调用...,因为静态注册主要就是为了让程序在未启动的情况下也能接收到广播,而发送本地广播时,我们的程序已经启动了,因此也完全不需要使用静态注册的功能。...)方法中添加过多的逻辑或进行任何耗时操作,因为在广播接收器中是不允许开启线程的,当onReceive()方法进行了较长时间而没有结束时,程序就会报错。

    1.7K20

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

    1.2 有序广播(Ordered broadcasts) 是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。...所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播。...动态注册:必须在代码中执行 受activity的生命周期影响 当广播为有序广播时: 同优先级的广播接收器,静态注册优先级高于动态注册 同优先级的同类广播接收器,静态广播:先扫描的优先于后扫描的。...动态广播:先注册得优先于后注册的。 当广播为标准广播时: 无视优先级,动态广播优先于静态广播接收器 同优先级的同类广播接收器,静态广播:先扫描的优先于后扫描的,动态:先注册的优先于后注册的。 6....6.getType() 根据返回的内容URI来返回相应的MIME类型。 而他们每一个方法都带有一个uri参数,这个参数正是调用ConterntResolver的增删改查方法时传递过来的。

    90230

    Android中LiveEventBus收不到消息?不妨试试本地广播

    在Android中,本地广播(LocalBroadcast)是一个轻量级的广播机制,用于在同一个应用程序内不同组件(如Activity、Service等)之间进行通信。...相比于全局广播,本地广播的优点在于更安全和效率更高,因为它们不会离开应用程序的范围。以下是使用本地广播在Activity之间进行通信的详细步骤及代码示例。 1....设置广播接收器 首先,你需要在接收消息的Activity中设置LocalBroadcastManager来接收广播。在onCreate方法或其他合适的生命周期方法中注册广播接收器。...发送广播 在需要发送广播的Activity中,可以通过LocalBroadcastManager发送广播消息。...性能: 本地广播相比全局广播更高效,适用于应用内部组件间的通信。 组件生命周期: 确保在相应的生命周期方法(如onDestroy)中取消广播接收器的注册,以避免内存泄漏。

    14610

    Android蓝牙详析 | 蓝牙的适配、权限、开启、搜索发现等处理

    本系列笔记概述 蓝牙传输优势:功耗低,传输距离还可以; 蓝牙聊天室案例 Android中蓝牙设备的使用 蓝牙权限(本文的讲解内容之一) 蓝牙功能开启(本文的讲解内容之一) 搜索蓝牙设备(本文的讲解内容之一...} mBluetoothAdapter.startDiscovery();//异步函数 } }); 注册广播接收器..., 监测扫描发现设备时、扫描完毕时两个状态, 然后做对应处理: //广播接收 private BroadcastReceiver mBluetoothReceiver = new BroadcastReceiver...; } } }; 在onCreate()末尾注册intent过滤器: //为广播接收器注册过滤器 IntentFilter...,Toast.LENGTH_SHORT).show(); } //为广播接收器注册过滤器 IntentFilter filter = new IntentFilter

    6.6K30

    Android Service 服务(二)—— BroadcastReceiver

    通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,广播接收者和JMS中的Topic消息接收者很相似。...广播接收器只能接收广播,对广播的通知做出反应,很多广播都产生于系统代码,如:时区改变的通知、电池电量不足、用户改变了语言偏好,或者开机启动等 广播接收器没有用户界面,但是它可以为它们接收到信息启动一个Activity...Normal broadcasts(正常广播),用 Context.sendBroadcast()发送是完全异步的,它们都运行在一个未定义的顺序,通常是在同一时间。...因此从这个特征可以看出,在所调用的onReceive(Context, Intent)函数里,不能有过于耗时的操作,不能使用线程来执行。对于耗时的操作,应该在startService中来完成。...的使用(静态和动态两种注册方式)

    1.6K20

    Android应用界面开发——BroadcastReceiver(实现基于Service的音乐播放器)

    发送广播时Intent的Action为com.trampcr.musicplayer.PLAY_ACTION,这就需要配置MyReceiver应监听Action为该字符串的Intent,在AndroidManifest.xml...广播类型 ---- 广播分为两种: Normal Broadcast(普通广播):完全异步,可以在同一时刻被所有接收者接收到。...,可以看到先显示第一个广播接收器中的内容,再显示第二个广播接收器中的内容,如下: ?...系统广播 ---- 广播接收器除了可以接收用户发送的广播,还可以接收系统广播,常用的系统广播如下: ACTION_TIME_CHANGED:系统时间被改变。...onClick中根据点击的按钮发送广播,发送广播时会把所按下的按钮标识发送出来。 接下来是后台Service,会在播放状态发生改变时对外发送广播。

    1.6K20

    安卓四大组件之二广播

    定义 BroadcastReceiver,“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。...在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作...Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。...的类型(为后续注册方式的对比做准备) (3)在默认广播类型下设置优先级和无优先级情况下两种注册方式的比较 (4)在有序广播类型下两种注册方式的比较 (5)通过接受打电话的广播,在程序(Activity...构建Intent,使用sendBroadcast方法发出广播定义一个广播接收器,该广播接收器继承BroadcastReceiver,并且覆盖onReceive()方法来响应事件注册该广播接收器,我们可以在代码中注册

    9610

    BroadcastReceive基础知识总结「建议收藏」

    BroadcastReceive基础知识总结 1、BroadcastReceive简介 BroadcastReceive也就是“广播接收者”的意思,顾名思义,就是用来接收来自系统和应用中的广播 在Android...系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能,当网络状态改变时,系统会产生一条广播,接收到这条广播,就能及时的做出提示和保存数据等操作,当电池的电量改变的时候...,优先级高的接受者又能力终止这个广播 (3)Sticky Broadcast:粘性广播 当处理完之后的Intent,依然存在,知道你把它去掉 3、广播接收器的创建步骤 1、构建Intent,使用sendBroadcast...方法发送广播 2、定义一个广播接收器,该广播接收器集成BroadcastReceiver,并且覆盖onReceive()方法来响应事件 3、注册广播接收器,我们可以在代码中注册,也可以在AndroidManifest.xml...5、有序广播 发送广播 sendOrderedBroadcast(); * 在注册广播中的中使用android:priority属性,这个属性的范围在-1000---1000

    44930

    Android开发笔记(五十)定时器AlarmManager

    另外,由于是系统服务发送广播,因此只要再次打开APP,就会自动收到广播发来的定时任务。 AlarmManager常用的启动方法有两个: set : 该方法用于设置一次性定时器。...其中定时器类型主要取值有: RTC_WAKEUP : 表示定时器即使在睡眠状态下也会启用,此时定时器使用系统时间 RTC : 表示定时器在睡眠状态下不可用,此时定时器使用系统时间 ELAPSED_REALTIME_WAKEUP...: 表示定时器即使在睡眠状态下也会启用,此时定时器使用相对时间(相对于系统启动开始) ELAPSED_REALTIME : 表示定时器在睡眠状态下不可用,此时定时器使用相对时间 因为AlarmManager...使用的是系统服务来发送广播,所以在注册广播接收器时需要注意以下几点: 1、要在AndroidManifest.xml中定义receiver; 2、代码中注册接收器必须使用Context.registerReceiver...,不能使用LocalBroadcastManager来注册; PendingIntent AlarmManager启动方法中的定时任务使用了PendingIntent类,PendingIntent

    3K10

    Android开发笔记(四十七)Runnable接口实现多线程

    实现Runnable接口只需重写run函数,该函数内部放的就是需要Runnable处理的事务。run方法无需显式调用,在启动Runnable实例时便会调用对象的run方法。...Runnable postAtTime : 在指定时间启动Runnable removeCallbacks : 回收/移除指定的Runnable 二、使用View类的post方法 View类也提供了...实际开发中,Runnable一般会延迟一段时间后启动,这个特性可用于四个方面: 1、有些事情需要在Activity页面显示出来后才能做,比如广播接收器一般在onStart或者onResume中注册...,所以onCreate方法中若想发送广播后就能接收广播,那得延迟一点时间。...: 在非UI线程中刷新视图 postInvalidateDelayed : 在非UI线程中延迟若干时间后刷新视图 为避免误解,这里对invalidate和postInvalidate的区别做进一步的说明

    2.3K30

    GPS用户定位

    GPS的作用就是在全球范围内提供提供准确的定位、测量、和高精度的时间标准等功能。 GPS定位系统由三部分组成:GPS卫星组成的空间部分,若干地面站组成的控制部分和普通用户手机中的接收器。...在布局文件中我们使用一个id为list的ListView组件,用来显示所有LocationProvider。...本程序的实现思想是借助一个Intent接收器以经纬度为圆心以指定值为半径划定一个区域,当设备出入该区域时,发出提醒信息。...,当广播到来时,根据不同的情况在屏幕上来显示用户进出二七区时的相应提示信息。...简要描述GPS是什么以及它的功能。 2. 简述在Android中获取GPS定位信息的步骤。 二、上机练习 编写一个小型的动画,动画界面中提供一个小车(用图片表示),一条带有障碍物的道路。

    15610

    构建复杂应用的神器,FBroadcast

    在还没有注册任何接收器的情况下,开发者可以在事件发生时,预先发送一条粘性广播。粘性广播会被暂时滞留在广播系统中,当有接收器被注册时,即会立即广播。...,粘性广播 将会暂时滞留在系统中,直到有该类型的接收器被注册,则会立即发出广播(当广播系统中有对应类型的接收器时,就和普通广播具有相同的表现)。...Bind Context 一码卸载,快捷精准 FBroadcast 支持在注册接收器时传入一个环境对象(可以是任意类型),这会将接收器注册到环境中,当环境解构时,开发者可以方便的一次性移除所有在该环境中注册的接收器...注意,对于需要全局使用的状态/数据模型,它们对应的广播类型,在发送时,需要至少有一次将 persistence 设置为 true。...FBroadcast 在使用过程中,配合统一的广播类型注册表(也可以按模块分多张),开发者可以很轻易的借助 IDEA 的引用检索能力,随时查看所有广播的情况,对于不断迭代过程中的维护十分有益。

    67710
    领券