展开

关键词

全局事件-广播(Broadcast)

什么是广播 广播Android SDK的四大组件中唯一需要别动接收数据的组件。也就是说对于Activity、ContentProvider和Service都可以主动调用,并获取返回数据。 从这种表现形式上看,很像面向对象中的事件(Event),对于事件(onClick、onKeydown)来说,从来不会预知用户什么时候触发他们,只能默默的等待不可预知的事件发生。 因此,广播也可以被成为全局事件。 必须要指定 我们编写的短信接收器才可以接收系统的短信广播,切记 配置权限android.permission.RECEIVE_SMS 即使注册广播接收器的程序关闭,接收器仍然会接收到广播,除非从模拟器或者手机中卸载程序或者注销接收器 来去电拦截 广播动作 监听电话状态以用于拦截来去电,来电(监听电话状态)和去电的广播动作如下: 来电:android.intent.action.PHONE_STATE 去电:android.intent.action.NEW_OUTGOING_CALL

21860

android广播

简介 android广播其实上是发布-订阅模型,发布有两种方式,订阅也有两种方式 发布的两种方式是无序方式(普通广播)和有序方式(有序广播) 订阅的两种方式是静态订阅和动态订阅 发布的两种方式 无序方式 定义广播的接受者 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent ; import android.util.Log; /** * 广播接收者 * */ public class MyBroadcastReceiver extends BroadcastReceiver </intent-filter> </receiver> 其中android:priority="999"越大 就越早收到广播 有序广播可以终止,无序广播不能终止,终止方法如下 abortBroadcast > </activity> 广播的常用方式 一个比较常见的例子就是自动读取短信验证码/短信拦截 系统在收到短信的时候,会发送一个:android.provider.Telephony.SMS_RECEIVED

33320
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

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

    自定义广播事件

    定义一个activity,清单文件中指定主题为透明,在onCreate()方法里面直接调用finsh()方法,关掉,这样可以就可以实现了 应用场景:比如车载电脑,里面有很多应用,有些应用需要发射信号给某一个广播接收者 新建一个广播接收者,清单文件中进行配置,监听的动作<action name=”com.tsh.aabb”/>,这个动作名称就是我们自定义广播要发射的动作 新建一个应用,来发射信号 获取Intent对象 api叫sendOrderedBroadcast(intent,receiverPermission),发送一条有序的广播事件,上面的是发送一条无序的广播事件,无序的广播会被所有的广播接收者收到,有序的广播会按照优先级接收意图过滤器的属性 android:prority=”1000”,参数:Intent对象,所需权限 并且高优先级的可以终止掉广播事件abortBroadcast() 还有一个重载函数,里面有个参数,设置finalReceiver ,保证这个接收者能接收到,不受终止事件的影响

    36130

    Android广播

    --priority 默认0--> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"></action> < "); sendBroadcast(intent); 接收发送的广播 Manifest文件注册 <receiver android:name=".receiver.MyReceiver"> <intent-filter <action android:name="android.intent.action.BOOT_COMPLETED"></action> 开机广播 <permission android:name= "android.permission.RECEIVE_BOOT_COMPLETED"/> 接受的权限 android.intent.action.SCREEN_OFF 屏幕点亮 规定 只有动态注册才可以 android.intent.action.SCREEN_ON 屏幕关闭 规定 只有动态注册才可以 android.net.conn.CONNECTIVITY_CHANGE 网络状态改变 特别感谢:

    405120

    Android学习】Android广播机制

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

    10520

    【译】RxJava中的事件广播

    如果你想多点传播一个事件,也就是向所有的下游操作符或订阅者发送同一个事件。这在做耗时操作如网络请求等场景来讲是非常有用的。你不需要为每个订阅者做重复的网络请求,只需执行一次,然后传播响应结果即可。 Subject的操作符逻辑值只会被执行一次,利用这种原理就可以实现向下游Subscriber的事件广播了。 必须牢记的是:事件流以ConnectableObservable或者Subject作为多点传播的启动点,因此,这之后的逻辑会重复执行,并传播给每一个Subscriber。 如果你想通过事件广播减少冗余操作,请保证在正确的启动点上实现。 很多人都在使用Subject,我们不在这里对它品头论足。 不得不说的是,它们都具有多点传播的特性,但是你要记住的是它们只会在发送事件这个启动点之后开始多点传播。

    23930

    【译】RxJava中的事件广播

    如果你想多点传播一个事件,也就是向所有的下游操作符或订阅者发送同一个事件。这在做耗时操作如网络请求等场景来讲是非常有用的。你不需要为每个订阅者做重复的网络请求,只需执行一次,然后传播响应结果即可。 的操作符逻辑值只会被执行一次,利用这种原理就可以实现向下游Subscriber的事件广播了。 必须牢记的是:事件流以ConnectableObservable或者Subject作为多点传播的启动点,因此,这之后的逻辑会重复执行,并传播给每一个Subscriber。 如果你想通过事件广播减少冗余操作,请保证在正确的启动点上实现。 很多人都在使用Subject,我们不在这里对它品头论足。 不得不说的是,它们都具有多点传播的特性,但是你要记住的是它们只会在发送事件这个启动点之后开始多点传播。

    34040

    Android学习--广播机制

    广播机制简介 ----         Android广播可以分为两种类型的,标准广播和有序的广播;         标准广播:  是一种完全异步执行的广播,在广播发出去之后,所有的广播接收器几乎是同一时接收到这条广播 有序广播:  是一种完全同步执行的广播,在广播发出去之后,同一时刻只有一条消息能接收到这条广播。 当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递,所以这个时候的广播接收器是有先后顺序的,优先级高的广播接收器就可以先接收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样的话后面广播接收器就不能接收到广播消息了 context.CONNECTIVITY_SERVICE       2、系统为了保护用户的隐私安全,是需要我们获取一下网络权限的,这个就是 Androidmanifest.xml 文件中注册            <uses-permission android :name="android.permission.ACCESS_NETWORK_STATE"/>            注意它和application标签是同级的,不是包含的application标签里面的

    19050

    Android中BroadcastReceiver广播

    BroadCastReceiver 简介 广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 Context.sendBroadcast 通常一个广播 Intent 可以被订阅了此 Intent 的多个广播接收者所接收。  广播是一种广泛运用的在应用程序之间传输信息的机制 。 而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件;  来自普通应用程序,如一个应用程序通知其他应用程序某些数据已经下载完毕。   xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com ";//广播类型。

    41350

    Android O 广播限制

    如果多个应用注册了接收基于系统事件广播,就会出现,触发广播的系统事件会导致所有应用快速的连续消耗资源,从而降低用户体验。 为了缓解这个问题,Android N对广播施加了一些限制,而Android O让这些限制更加严格。 Android N做的限制 Android 7.0 及其更高版本不再接收 CONNECTIVITY_ACTION 的静态广播(在清单注册的receiver)。 ACTION_CONNECTION_STATE_CHANGED,ACTION_CONNECTION_STATE_CHANGED,ACTION_ACL_CONNECTED,ACTION_ACL_DISCONNECTED 如果应用收到这些蓝牙事件广播 ACTION_EVENT_REMINDER 由calendar provider发送,以将事件提醒发布到日历应用程序。 由于日历提供程序不知道日历应用程序是什么,因此此广播必须是隐式的。

    1.6K30

    Android 全局广播的使用

    广播作为Android一个重要的组成部分,很多功能的实现都依赖于广播Android系统在发生一些重要事情的时候都会发送广播(电量变化、网络变化等等)。 我们也可以在自己得应用程序中发送广播信息,一些能够接受到特定的广播信息的广播接收器就能够接收到对应的广播信息。进而进行事件处理,那么首先我们来看一下广播的基本使用方法。 我们先来看一下无序广播,新建一个Android工程: activity.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk listener); } private View.OnClickListener listener = new View.OnClickListener() { // 设置按钮的单击监听事件 listener); } private View.OnClickListener listener = new View.OnClickListener() { // 设置按钮的单击监听事件

    1.1K10

    Android 解析蓝牙广播数据

    依据Android  ScanRecord类的源码编写了ScanRecordUtil 类,扫描BLE设备,会获取byte[] scanRecord字节数组,可直接调用ScanRecordUtil.parseFromBytes (scanRecord).toString();获取广播中的信息,其他单独获取某个属性值与上类似,参照ble官方说明:https://www.bluetooth.com/specifications/assigned-numbers /generic-access-profile import android.bluetooth.le.ScanRecord; import android.os.ParcelUuid; import android.support.annotation.Nullable; import android.util.ArrayMap; import android.util.Log; import android.util.SparseArray

    1.6K30

    Android:BroadcastRecevicer广播类型汇总

    Android:Broadcast广播类型主要分为5类: 普通广播(Normal Broadcast) 系统广播(System Broadcast) 有序广播(Ordered Broadcast) 粘性广播 系统广播(System Broadcast) Android中内置了多个系统广播:只要涉及到手机的基本操作(如开机、网络状态变化、拍照等等),都会发出相应的广播 每个广播都有特定的Intent - Filter (包括具体的action),Android系统广播action如下: 系统操作 action 监听网络变化 android.net.conn.CONNECTIVITY_CHANGE 关闭或打开飞行模式 App应用内广播(Local Broadcast) 背景 Android中的广播可以跨App直接通信(exported对于有intent-filter情况下默认值为true) 冲突 可能出现的问题 粘性广播(Sticky Broadcast) 由于在Android5.0 & API 21中已经失效,所以不建议使用,在这里也不作过多的总结。 ---- 6.

    2.8K41

    Android广播实践小结

    Android系统有一套广播消息机制,方便进行每个应用程序之间的消息通知。而且广播接受者作为Android四大组件之一,经常被使用到。我也接触到广播消息机制,因此有必要对自己所学的知识梳理整理下。 有序广播 有序广播是一种同步执行的广播。这种广播顾名思义是有接受顺序的广播。当广播被发出之后,只有一个广播接受者会收到消息。因此,该广播是一对一的广播。 0x03 静态注册广播与动态注册广播的区别 静态注册即使App退出,仍然能接收到广播 动态注册时,当Activity退出,就接收不到广播了 但是静态注册即使App退出,仍然能接收到广播这种说法自Android 说明: Android 3.1开始系统在Intent与广播相关的flag增加了参数: 1) FLAG_INCLUDE_STOPPED_PACKAGES:包含已经停止的包(停止:即包所在的进程已经退出 ) 2) FLAG_EXCLUDE_STOPPED_PACKAGES:不包含已经停止的包 自Android3.1开始,系统本身增加了对所有App当前是否处于运行状态的跟踪。

    15510

    基于 Redis 实现 Laravel 广播功能(上):广播事件分发和底层源码探究

    定义广播事件类 Laravel 支持通过分发广播事件的方式来发布消息(上篇教程我们通过数组模拟了事件消息),要创建广播事件,使用如下 Artisan 命令即可: php artisan make:event 广播事件类和普通的事件类基本结构是一样的,只是在其基础上实现了 ShouldBroadcast 接口表示这是个广播事件,然后通过 broadcastOn 方法定义了广播频道,你可以基于 InteractsWithSockets 广播事件分发及底层实现 和普通事件类一样,广播事件也要通过分发进行处理。 如果没有实现这些接口就不是广播事件,按照普通事件类处理。 所以虽然广播事件没有定义显式的事件监听器,但是底层其实是通过 BroadcastEvent 作为统一的广播事件监听器来处理所有广播事件的。

    40620

    Android自定义权限广播

    扯淡前言 已经很久没有写文章了,最近有人问我怎么断片(篇),我发现...不扯淡了,开始讲自定义权限广播 思路 就是利用Android中可以自定义权限对广播增加了一层安全保护 举个栗子 上菜(贴代码,简单明了 ) ·广播的定义(这边是静态注册) class CustomReceiver : BroadcastReceiver() { override fun onReceive(context: Context android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER > </receiver> </application> ·广播的调用(当然这个是全局的广播,如果仅限制自己app内部使用,推荐本地广播LocalBroadcastManager

    74710

    Android:BroadcastReceiver广播注册方式汇总

    能否接收其他App的发出的广播 //默认值是由receiver中有无intent-filter决定的:如果有intent-filter,默认值为true,否则为false android:exported 子类的类名 android:name=".mBroadcastReceiver" //具有相应权限的广播发送者发送的广播才能被此BroadcastReceiver所接收; android android:process="string" > //用于指定此广播接收器将接收的广播类型 //本示例中给出的是用于接收网络状态改变时发出的广播 <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> 注册示例 <receiver //此广播接收者类是mBroadcastReceiver android:name=".mBroadcastReceiver" > //用于接收网络状态改变时发出的广播

    1.2K40

    基于 Pusher 驱动的 Laravel 事件广播(上)

    既然事件广播,那就需要生成事件和对应的监听器,在app/Providers/EventServiceProvider.php中写入任何一个事件名称如SomeEvent,和对应的监听器如EventListener : php artisan event:generate Laravel中事件如果需要广播,必须实现Illuminate\Contracts\Broadcasting\ShouldBroadcast接口 ,并且事件中public属性都会被序列化作被广播的数据,即public属性数据会被发送。 2.7 调试Pusher服务端集成包 本小节主要涵盖使用Laravel Pusher Bridge方法作为事件广播的调试。 A页面触发事件B页面能接收到数据;B页面触发事件A页面接收到数据。

    9920

    基于 Pusher 驱动的 Laravel 事件广播(下)

    就像是听广播的频道一样,不同频道接收不同电台。 Event:如果频道是用来辨识数据的,那事件就是对该数据的操作。 就像数据库有CRUD操作事件,那频道就有相似的事件:频道的create事件、频道的read事件、频道的update事件、频道的delete/destroy事件。 这就像是听广播的内容,不仅仅被动听,还可以有更复杂的行为,如互动一样。 这不仅可以熟悉数据的发生行为,还可以当处理事件数据时解耦客户端逻辑。 : 访问活动页面事件:user-visit 发布一个新的活动事件:new-status-update 给一个活动点赞事件:status-update-liked user-visit:

    8420

    Android》Lesson19-广播1

    2、在此模拟器下运行程序,可以看到双屏的效果 二、广播机制 Android四大组件 - 简书 Android总结篇系列:Android广播机制 - Windstep - 博客园 三、系统广播 Android 常用系统广播_android开发_新浪博客 Android系统广播大全及开机自启动的Service - djun100的专栏 - 博客频道 - CSDN.NET(含Service+系统广播例子 ) 1、网络状态发生变化系统广播 network: android 使用广播监听网络状态 - CodingMan - 博客频道 - CSDN.NET 2、动态注册监听网络变化 (1) ---- (5)可以把(1)改为匿名接收器 [android]广播接收器类和 registerReceiver 方法 Intent - Android SDK 模拟器可用系统广播 (1)电池电量变化广播 BigChina - 博客园 接收系统广播消息之监听手机电量变化 - Android移动开发技术文章_手机开发 - 红黑联盟 (2)音量变化广播android.media.VOLUME_CHANGED_ACTION

    32790

    相关产品

    • 事件总线

      事件总线

      腾讯云事件总线(EB)是一款安全,稳定,高效的无服务器事件管理平台,支持腾讯云服务、自定义应用、SaaS应用以标准化、中心化的方式接入,帮助您轻松实现无服务器事件驱动架构。

    相关资讯

    热门标签

    扫码关注腾讯云开发者

    领取腾讯云代金券