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

为什么getCurrentInterruptionFilter BroadcastReceiver可以在快速设置中工作,而不能在设置中工作?

getCurrentInterruptionFilter BroadcastReceiver可以在快速设置中工作,而不能在设置中工作的原因是因为它们所监听的是不同的系统广播事件。

快速设置是指Android系统中的快速设置面板,用户可以通过下拉通知栏来快速开启或关闭一些常用的系统功能,比如调节音量、开启飞行模式等。当用户在快速设置面板中改变了中断过滤器的设置时,系统会发送一个名为"android.media.AudioManager.ACTION_INTERRUPTION_FILTER_CHANGED"的广播事件。getCurrentInterruptionFilter BroadcastReceiver可以监听到这个广播事件,并根据用户的设置进行相应的处理。

而设置界面是指Android系统中的系统设置界面,用户可以在这里对系统的各种设置进行详细的配置。当用户在设置界面中改变了中断过滤器的设置时,系统会发送一个名为"android.app.NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED"的广播事件。但是getCurrentInterruptionFilter BroadcastReceiver无法监听到这个广播事件,因此不能在设置界面中工作。

需要注意的是,getCurrentInterruptionFilter BroadcastReceiver只能在Android 5.0及以上的版本中使用,因为中断过滤器的设置是在Android 5.0中引入的新功能。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/umeng_push)可以帮助开发者实现消息推送功能,适用于各类应用场景,包括但不限于社交、电商、游戏等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET 5应用程序的跨域请求功能详解什么是“同域”添加CORS包在应用程序配置CORSCORS策略选项跨域请求的凭据设置先行请求的过期时间CORS是怎么样工作的先行请求

凭据需要在CORS做特殊的处理,默认情况下,浏览器跨域请求不发送任何凭据。...允许凭证时候要相当注意,它意味着一个它域的网站在用户不知情的情况下将可以发送一个登陆成功用户的凭据给你的应用程序。CORS还规定如果允许凭证存在,那么将域设置为“*”是无效的。...这对理解CORS如何工作非常重要,进而让你可以正确的配置自己的CORS策略,分析你的应用程序为什么不像预期的那样工作。 CORS规定提出了几个新的HTTP头来打开跨域请求。...先行请求 一些CORS请求,浏览器发送真实的请求资源的请求之前,发送一个附加的请求叫做“preflight request”(本文中的先行请求),以下条件都满足的情况下,浏览器可以忽略这个先行请求...HTTP方法 Access-Control-Request-Headers::设置真正请求的头的列表(同样包含浏览器自己的请求头) 下文中是一个示例,并且假设服务端允许请求: HTTP/1.1 200

2.5K50

我以为发现了Android 14系统的一个bug,然而...

事情的起因是这样的,某天工作群里,我看到我们部门的同事guting发了这样一条消息。 我看到这条消息之后的第一感觉就是,貌似和我印象Android 14的行为并不一致。...为了这篇文章大家能够看得明白,所以我把当时写的Android 14涉及隐式Intent限制变动的部分摘抄出来,跟大家再快速过一遍。...后来我们又尝试了一下使用隐式Intent启动Serivce,指定包名的情况下也会崩溃。只有发送广播时不会崩溃,且这条广播是收不到的,相当于广播莫名其妙丢失了。...我去翻了翻《第一行代码 第3版》对广播这部分的解释,里面确实有提到,从Android 8系统开始,静态注册的BroadcastReceiver,如果想要接收得到广播消息,Intent必须明确指定App...最后,我尝试把targetSdkVersion设置成33,发现即使指定App包名,广播消息也能收到。只要设置成了34,指定App包名广播就会丢失,且没有任何错误出现。

27910

android开发(十九) BroadcastReceiver应用详解

Android的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了, 大大减少了开发的工作量和开发周期。...onReceive方法内,我们可以获取随广播而来的Intent的数据,这非常重要,就像无线电一样,包含很多有用的信息。...创建完我们的BroadcastReceiver之后,还不能够使它进入工作状态,我们需要为它注册一个指定的广播地址。...我们可以根据以上任意一种方法完成注册,当注册完成之后,这个接收者就可以正常工作了。我们可以用以下方式向其发送一条广播: ?...我们注意到,FirstReceiver和SecondReceiver中最后都使用了setResultExtras方法将一个Bundle对象设置为结果集对象,传递到下一个接收者那里,这样以来,优先级低的接收者可以

65520

Android高频面试专题 - 基础篇(四)BroadcastReceiver

目前API 21已标记为Deprecated,推荐使用。系统电量的广播就是使用粘性广播发送的。 本地广播 通过系统LocalBroadcastManager发送,只能在当前应用内接收。...mActions 的主要作用是方便在广播发送后快速得到可以接收它的BroadcastReceiver注册广播时,其实是更新这两个Map....7、广播安全性 Android系统的广播可以跨进程直接通信,会产生以下两个问题: 其他APP可以接收到当前APP发送的广播,导致数据外泄。...Android 4.0及以上系统中发送广播时,可以使用setPackage()方法设置接受广播的包名。 使用本地广播。...,可以广播内启动一个IntentService来执行。

1.6K41

Broadcasts详解「建议收藏」

为了避免这种情况,如果你想用更多时间在后台线程处理广播,那么你应该调用goAsync()或JobService来让系统知道进程要继续执行一些工作。...广播的权限设置 通过设置广播的权限,有特定权限的APP才能接收此广播。您可以对广播的发送方或接收方执行权限限制。...本地广播可以应用程序作为通用的pub/sub event bus使用,而无需任何系统范围的广播开销。...6、 因为一个接收器的onReceive(Context, Intent)方法主线程上运行,它应该快速执行并返回。...这会让ReceiveronReceive()返回后保持Active。然而,即使采用这种方法,系统也希望您能在10秒内完成广播。它允许你把工作移动到另一个线程,避免阻塞主线程。

75310

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

可通过 标签设置 android:property 属性来设置优先级,未设置时按照注册的顺序接收广播。 有序广播接受器间可以互传数据。...默认情况下,广播接收器也是运行在主线程,因此 onReceiver() 不能执行太耗时的操作( 超过 10s ),否则将会产生 ANR 问题。...从 Android 8.0 开始,对于大多数隐式广播,不能在 AndroidManifest 文件声明接收器。...不要在 onReceiver() 方法添加过多的逻辑或者进行任何的耗时操作,因为广播接收器是不允许开启线程的,当 onReceiver() 方法运行了较长时间没有结束时,程序就会报错。... Android 4.0 及以上系统中发送广播时,可以使用 setPackage() 方法设置接受广播的包名。 使用局部广播。

1.4K31

android学习笔记----ANR

这意味着您的应用程序UI线程执行的任何操作都需要很长时间才能完成,因为您的应用程序没有给自己处理输入事件或意图广播的机会。 因此,UI线程运行的任何方法都应该在该线程上尽可能少地工作。...BroadcastReceiver 执行时间的具体约束强调广播接收器的意图:在后台进行小的,离散的工作量,例如保存设置或注册 Notification。...另一个共同的问题是BroadcastReceiver对象执行过频繁时发生。频繁的后台执行可以减少其他应用程序可用的内存量。...提示: 您可以使用 StrictMode 帮助查找可能长时间运行的操作,例如您可能在主线程上意外执行的网络或数据库操作。 加强响应能力 通常,100到200ms是用户将感知应用程序缓慢的阈值。...特别是对于游戏,对工作线程的移动进行计算。 如果您的应用程序具有耗时的初始设置阶段,请考虑尽快显示启动画面或渲染主视图,指示正在加载并异步填充信息。

52100

Android O 广播限制

Android O进一步的限制 Android 8.0 或更高版本的应用无法继续在其AndroidManifest为隐式广播注册BroadcastReceiver。...应用可以继续在其清单为这些广播注册接收器,不管应用适配哪个 API 级别。 注意:即使这些隐式广播仍然可以在后台工作,但你应该尽量避免对它们注册监听。...ACTION_PACKAGE_DATA_CLEARED 仅当用户从“设置明确清除其数据时才发送,因此广播接收器不太可能严重影响用户体验。...可能的解决方法包括: 通过调用 Context.registerReceiver() 动态创建BroadcastReceiver不是清单声明一个静态的BroadcastReceiver。...这种方法允许应用安排其未活跃运行时执行工作,不过仍能够使系统可以不影响用户体验的情况下安排这些作业。

3.7K31

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

使用有序广播,某一个时刻只有一个接收器收到消息,它处理完消息以后,再把消息发送给下一个接收器。收听广播的顺序由接收器的优先级来确定。接收器可以截断消息,传递,这样后面的接收器就无法获得广播消息。...静态注册是为了让程序未启动的情况下也能收到广播;发送本地广播时,由于程序已经启动,因此不需要使用静态注册功能。...定义通知的时候,加入setSound函数,选择手机音频目录下的已有音频文件来播放特定的声音。另外,还可以设置震动方式来提醒用户。...服务没有自己的进程,它和活动一样都运行在当前进程的主线程;因此大运算量的任务不能在服务运行,否则会影响界面主线程。...答案: (1)静态注册: AndroidManifest.xml 中用 标签声明,并在节点辖域中用 标签设置过滤器;(2)动态注册:代码定义并设置好一个

6910

Android插件化原理解析——广播的管理

>标签(也即静态注册的广播)的时候保存相应的信息;Apk的解析过程是PMS中进行的,因此静态注册广播的信息存储PMS。...对于实现静态BroadcastReceiver插件化的问题,有的童鞋或许会想,我们可以借鉴Activity的工作方式——用替身和Hook解决。但是很遗憾,这样是行不通的。为什么呢?...当然,这样也是有缺陷的,静态BroadcastReceiver与动态BroadcastReceiver一个非常大的不同之处在于:动态BroadcastReceiver进程死亡之后是无法接收广播的,静态...;这一点 插件加载机制 已有讲述,啰嗦了。...至于插件的动态广播如何实现插件化,这一点交给读者自行完成,希望你解决这个问题的过程能够加深对于插件方案的理解 ^ ^ 小节 本文我们介绍了BroadcastReceiver组件的插件化方式,可以看到

74120

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

但是,本手册,禁止将导出的属性设置为不确定的。...即使相同的应用中将广播发送到私有接收器,其他应用的公共接收器也可能会意外调用。 这就是为什么禁止指定带有意图过滤器定义的exported ="false"。 以下两张图展示了意外调用的发生情况。...图 4.2-4 是一个正常行为的例子,隐式意图只能在同一个应用调用私有接收器(应用 A)。 意图过滤器(图中,action ="X")仅在应用 A 定义,所以这是预期的行为。...要发送的广播类型基于广播发送方法确定。 请注意,粘性广播 Android 5.0(API Level 21)已弃用。...作为对策,有必要遵循“4.2.1.2 公共广播接收器 - 接收/发送广播”列出的要点,并确保传输的意图包含敏感信息。

97910

关于使用AlarmManager的注意事项

AlarmManager 经常被用来执行定时任务,比如设置闹铃、发送心跳包等。也许有人会有疑问:为什么不能使用相同具有定时效果的 Timer 和 Handler 呢?...至于 Timer 可以精确地做到定时操作,但是相比于 AlarmManager 而言还是差了一截。同理,如果手机关屏后长时间不使用, CPU 就会进入休眠模式。...它们之间的区别就是前者是从手机开机后的时间,包含了手机睡眠时间;而后者使用的就是手机系统设置的时间。...所以如果设置为 AlarmManager.RTC_WAKEUP ,那么可以通过修改手机系统的时间来提前触发定时事件。...What the fuck 发现在设备关屏静止一段时间后, AlarmManager 又又又不能正常工作了。相必此时你连日狗的心都有了吧!

1.5K20

Android应用ANR分析

如果APP运行在前台,系统就会弹出一个提示框,告知用户,用户可以选择继续等待或者强制关掉。 ANR的原因 ANR是因为负责更新UI的主线程无法处理用户输入事件或绘制操作,导致的糟糕体验。...BroadcastReceiver能在10秒内结束接收到的任务。 ANR的触发场景 主线程执行耗时的IO操作。 主线程执行耗时的计算。...MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 如何避免ANR 工作线程...避免BroadcastReceiver执行耗时操作,如保存数据或者注册一个Notification。...不能通过工作线程来执行复杂的任务操作,而应该启动一个 IntentService来响应BroadcastReceiver的长时间任务。

90840

Android应用ANR分析

如果APP运行在前台,系统就会弹出一个提示框,告知用户,用户可以选择继续等待或者强制关掉。 ANR的原因 ANR是因为负责更新UI的主线程无法处理用户输入事件或绘制操作,导致的糟糕体验。...BroadcastReceiver能在10秒内结束接收到的任务。 ANR的触发场景 主线程执行耗时的IO操作。 主线程执行耗时的计算。...MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 如何避免ANR 工作线程...避免BroadcastReceiver执行耗时操作,如保存数据或者注册一个Notification。...不能通过工作线程来执行复杂的任务操作,而应该启动一个 IntentService来响应BroadcastReceiver的长时间任务。

1.1K20

这里有一份BAT大厂Android面试超详细知识点,赶快收藏备战金九银十!

祝大家面试顺利~~ 文末还有给大家分享我整理的Android面试专题及答案可以拿去参考下~ 注意,整篇文章是知识点的概括,包含答案,需要大家多看源码,知识只有自己去探索与发现,才会弥足珍贵!...Fragment相关 Fragment生命周期 Fragment的懒加载 Fragment之间的通信 FragmentPagerAdapter与FragmentStatePagerAdapter的区别 为什么建议直接通过使用...和Serializable差异 IPC相关 Android什么样的情况下会使用多进程模式,如何开启多进程 Android为什么采用Binder做为IPC机制 IPC常用方式 使用Bundle、使用文件共享...最后如何才能让我们面试对答如流呢? 答案当然是平时工作或者学习多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?...好了,今天的分享就到这里,如果你对面试遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以去我的主页加一下技术群。

78930

broadcast receiver_consolidator

如果是Activity调用的registerReceiver,那此处的context就是Activity. flags 0 此函数else对rd的赋值: rd = new LoadedApk.ReceiverDispatcher...不过,若广播处理比较耗时,可以采用异步的方式进行处理,即先调用BroadcastReceiver的goAsync函数得到一个PendingResult对象,然后将该对象放到工作线程中去处理,这样onReceive...函数就可以立即返回不至于耽误太长时间。...工作线程处理完这条广播后,需要调用PendingResult的finish函数来完成整个广播的处理流程。 广播由AMS发出,处理却在另一个进程中进行。...整个过程一定涉及进程间通信,虽然BroadcastReceiver定义了了一个广播接收者,但是它与Binder没有任何关系,故其直接参与进程间通信。

36840

Android面试题:Broadcast需要注意哪些细节

注册 这个是常识了,两种注册方式:静态注册(menifast)和动态注册,展开说了。...那么既然onReceive不能执行耗时操作,我们是否可以onReceive开启一个新的线程来处理? onReceive开启新的线程,因为与其生命周期有关,所以下面与生命周期一起来说。...根据Broadcast的官方文档,当onReceive执行完这个Broadcast对象不再是alive状态,所以可以随时被回收销毁。...静态注册的时候,应该与activity等组件类似,(binder机制)先通过intent条件查找创建Broadcast对象,经过测试每次都是重新创建。...比如我们menifast静态注册一个Broadcast,然后通过一个按钮发送这个广播,Broadcast的onReceive打印自己的对象的toString,发现每次点击都是一个新的对象来执行。

20730

Art of Android Development Reading Notes 9

《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程 第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件只有BroadcastReceiver可以AndroidManifest...当service处于绑定状态时,外界可以很方便的和service进行通信,而在启动状态是不可与外界通信的。...(4)BroadcastReceiver是一种消息型组件,用于不同的组件乃至不同的应用之间传递消息,它工作系统内部。广播有两种注册方式:静态注册和动态注册。...静态注册是AndroidManifest中注册,应用安装的时候会被系统解析,这种广播不需要应用启动就可以收到相应的广播。...9.4 BroadcastReceiver工作过程 (1)BroadcastReceiver工作过程包括广播注册过程、广播发送和接收过程。

38120

Android四大组件Broadcast中注册广播registerReceiver流程源代码详解

Android系统为什么需要广播机制呢?...广播机制,本质上它就是一种组件间的通信方式,如果是两个组件位于不同的进程当中,那么可以用Binder机制来实现,如果两个组件是同一个进程,那么它们之间可以用来通信的方式就更多了,这样看来,广播机制似乎是多余的...,就可以把另外一个Activity或者Service启动起来为它服务,而且它根本上不依赖这个Activity或者Service的实现,只需要知道它的字符串形式的名字即可,广播机制更绝,它连接收者的名字都不需要知道...,快速找到对应的广播接收器的。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

46330

Android 面试之必问Android基础

我们可以将一些组件运行在其他进程,并且可以为任意的进程添加线程。组件运行在哪个进程manifest文件里设置的,其中,,和都有一个process属性来指定该组件运行在哪个进程之中。...我们可以设置这个属性,使得每个组件运行在它们自己的进程,或是几个组件共同享用一个进程,或是共同享用。元素也有一个process属性,用来指定所有的组件的默认属性。...序列化 Parcelable 与 Serializable Serializable 使用 I/O 读写存储硬盘上, Parcelable 是直接在内存读写。...Android 规定访问 UI 只能在主线程中进行,因为 Android 的 UI 控件不是线程安全的,多线程并发访问会导致 UI 控件处于不可预期的状态。为什么系统不对 UI 控件的访问加上锁机制?...工作原理 ThreadLocal ThreadLocal 是一个线程内部的数据存储类,通过它可以指定的线程存储数据,其他线程则无法获取。

69021
领券