sendBroadcast发送广播

这篇具有很好参考价值的文章主要介绍了sendBroadcast发送广播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这几天学习Receiver的时候,发现android 8.0之后对隐式注册的广播接收器做出了限制,除了一些例外情况,我试了几种情况总结下来,以防忘记.

使用sendBroadcast(intent)时

一:当intent直接指向一个具体广播接收器

如使用Intent的构造方法直接传递Context和Class或使用intent.setComponent或者setClass或setClassName

这种情况下,


查看源代码可知,实际上述构造方法和setClass,setClassName都是把接受到的参数去new一个ComponentName的实例sendBroadcast发送广播

sendBroadcast发送广播

sendBroadcast发送广播

可能有人会疑惑传入的参数有的是字符串有的是Class有的是Context
查看ComponentName的构造方法代码,发现最终实际传入的都是传入的参数去获取包名和类名.

这个广播接收器不管动态注册或者静态注册,都可以接受到广播.

二:intent指向一个包

如使用intent.setPackage,这种情况下intent需要设置action参数,在该包下的广播接收器就会根据这个intent里面的action来接收(不管静态注册或是动态注册)

三:intent只设置action

这种情况只能使用动态注册registerReceiver来接收广播.正常情况静态注册的广播接收器接受不到.但是参考网上资料,有大佬说给intent添加FLAG_RECEIVER_INCLUDE_BACKGROUND的flag就能突破这种限制(intent.addFlags(0x01000000);)让静态注册的广播接收器也能接收到广播白名单外的广播

参考Android 隐式广播 - 简书 (jianshu.com)文章来源地址https://www.toymoban.com/news/detail-403142.html

到了这里,关于sendBroadcast发送广播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android Alarm闹钟发送广播播放音乐

    public class MainActivity extends Activity { private TextView tv = null; private Button setTime,cancelTime; private Calendar c = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String alarm = getIntent().getStringExtra(“alarm”); if(alarm != nullalarm.equals(“a

    2024年04月10日
    浏览(44)
  • TCP/IP UDP广播无法发送或接收

    在看《TCP/IP 网络编程》这本书的时候,看到广播那一节,跟着书上写代码,怎么写都不行,广播就是没法发送/接收,发送端一直在发送数据,接收端就是没有反应。 对了好几遍源码,没有问题。实在是愁人。 最后查了很多资料,确定是网卡的问题。 现在的计算机都是多网

    2024年02月04日
    浏览(51)
  • android Alarm闹钟发送广播播放音乐,吐血整理

    ========================================== 一共有3个类 MainActivity.java 主程序 AlarmReceiver.java 广播接收器 MusicService.java service播放音乐 MainActivity.java package com.yqy.yqy_alarm; import java.util.Calendar; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.TimePickerDi

    2024年04月23日
    浏览(50)
  • QT网络编程之实现UDP广播发送和接收

    一.UDP广播介绍 UDP广播地址固定IP地址为:XXX.XXX.XXX.255。 如果向全网段发送广播消息,那么广播地址为:255.255.255.255; 如果向单个网段发送广播消息,例如你的IP是192.168.31.104,那么广播地址为192.168.31.255。 广播消息接收方需要绑定0.0.0.0地址并监听指定端口即可收到广播的群

    2024年03月25日
    浏览(67)
  • C/C++ Socket UDP 广播消息的发送与接收

    局域网内全网段广播消息的IP地址为:255.255.255.255,向该IP地址发送广播消息,局域网下的任何网段的客户机都能收到广播。 对于发送端,如果你只想给某个特定的网段发送消息,例如你的IP地址为192.168.31.107,那么你的广播地址是192.168.31.255,向该广播地址发送广播消息,只

    2024年02月12日
    浏览(39)
  • Adb发送特定广播给App和App获取权限的命令

    最近在做Autostart,但是没有bench R1环境 目前在模拟器上调试,需要调试自定义的广播和获取悬浮窗权限(因为这个app需要在开机未启动app的情况启动服务区获取传感器信号然后全局弹窗)。 需要先adb root adb remount 1.发送广播给指定应用: 2.包名获取悬浮窗(或者其他权限)

    2024年02月13日
    浏览(40)
  • adb shell模拟发送安卓广播的入门知识和100个实例讲解

    adb shell模拟发送安卓广播的入门知识和实例讲解: 广播是一种Android系统提供的一种机制,用于在系统中传递事件或消息。广播可以是系统级别的,也可以是应用级别的。系统级别的广播可以被所有应用接收,应用级别的广播只能被同一应用中的组件接收。 广播分为两种类型

    2024年02月09日
    浏览(52)
  • DHCP协议详解,报文内容,如何查看报文,为什么offer报文会以广播的形式进行发送

    dhcp地址分配协议,目前有dhcpv4以及dhcpv6,分别作用于ipv4与ipv6的网络中。 主要作用:dhcp服务端通过dhcp协议下发ip地址给到客户端(pc,终端),使得pc能有上网的能力。 1.dhcp交互图 2.dhcp报文交互过程中,有大部分的报文都是广播报文。 客户端拥有ip前,是可以接收所有的广

    2024年02月06日
    浏览(37)
  • Android发送广播时报错:Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx

    带android:sharedUserId=“android.uid.system” 发送广播时,会出现 Sending non-protected broadcast 异常提醒; 原因: Ams在发送广播时,对于systemApp(系统应用),会要求发送广播必须是声明在frameworksbasecoreresAndroidManifest.xml里面的protected-broadcast。这是为了提醒 系统应用开发者要将 broadca

    2023年04月09日
    浏览(45)
  • 【区块链 | 智能合约】Ethereum源代码(8)- Ethereum服务和以太坊P2P协议发送广播源码分析

    在“【区块链 | 智能合约】Ethereum源代码(2)- go-ethereum 客户端入口代码和Node分析”一文中,我们提到Ethereum作为一个service,被Node 注册进去。Node start的时候会启动其注册的所有服务,Ethereum service也是一样。 初始化方法

    2024年01月21日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包