Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android : PHONE_STATE广播限制

Android : PHONE_STATE广播限制
EN

Stack Overflow用户
提问于 2017-08-16 06:54:32
回答 6查看 1.9K关注 0票数 35

我一直在尝试做一些类似truecaller的应用程序,我的应用程序应该在电话挂断后显示屏幕。是通过在android.intent.action.PHONE_STATE文件中注册manifest隐式广播来实现的。

但是,如果我因为Android O广播限制而将应用程序更改为针对Android的应用程序,这是行不通的,而且我正在试图为这个用例找到一个替代解决方案。

在android中建议的替代解决方案:Job scheduler或向context注册service

作业调度程序:,由于Job scheduler优化,将有一些延迟来接收回调。因此,如果我们的应用程序屏幕在通话后几分钟显示,每隔几秒钟检查一次新的通话记录,就会影响用户体验,从而导致电池耗尽问题。

注册服务,并在中使用上下文:我希望该行为能够正常工作,即使应用程序没有活动或处于活动状态。如果系统杀死Service,这将无法工作。

注册前台服务:这要求随时向用户显示一个通知,这将是对用户的垃圾邮件,而运行服务24/7将消耗大量资源,这违背了广播限制的全部目的。

请提出另一种解决方案,使用户体验保持不变。

提前感谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-08-28 01:14:06

由于没有正确的解决方案从Android读取PHONE_STATE,我们可以选择的最佳选择是在内容提供者的新调用日志条目上触发一个作业。这样,保持了在调用结束后显示屏幕(有几秒钟的延迟)的行为。

注意:缺点是我们不能得到电话的状态(铃声或off_the_hook等)。只有在将新的呼叫日志添加到系统DB之后才会收到回叫。

票数 2
EN

Stack Overflow用户

发布于 2018-06-14 11:31:30

最后,该操作被添加到“隐式广播异常”列表中,这样您就可以将ACTION_PHONE_STATE_CHANGED添加到您的清单中,并且它将工作:

https://developer.android.com/guide/components/broadcast-exceptions

TelephonyIntents.ACTION_*_SUBSCRIPTION_CHANGED,"TelephonyIntents.SECRET_CODE_ACTION",ACTION_PHONE_STATE_CHANGED,ACTION_PHONE_ACCOUNT_REGISTERED,ACTION_PHONE_ACCOUNT_UNREGISTERED OEM电话应用程序可能需要接收这些广播。

票数 4
EN

Stack Overflow用户

发布于 2017-08-17 21:52:36

您只有一个解决方案,使用前台服务并在服务中注册广播接收器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45716904

复制
相关文章
[Android] Android O 广播限制
通常来讲,这个广播会被所有注册这个action的receiver接收到。即便是在Android O版本,还有两类receiver仍然会接收这个广播:
wOw
2020/01/20
4K0
android广播
android广播其实上是发布-订阅模型,发布有两种方式,订阅也有两种方式 发布的两种方式是无序方式(普通广播)和有序方式(有序广播) 订阅的两种方式是静态订阅和动态订阅
码客说
2019/10/22
1.1K0
Android的广播
Broadcast 在Android中 Broadcast是一种 广泛运用在引用程序之间传输信息的机制。 而BroadcastReceiver 是对发送出来的Broadcaset进行过滤接受并响应的一类组件。 如果不需发送广播到别的应用 使用 LocalBroadcastManger就可以了。 发送和接收流程 发送和接受的过程: 发送 首先在需要发送信息的地方 ,把要发送的信息和用于过滤的信息(如action 和 category)封装进intent对象,然后调用 Context.sendBroadcast
佛系编码
2018/05/22
1.1K0
【Android学习】Android广播机制
在Android中实现广播,首先我们要在Manifest.xml文件中配置一个<receiver/>标签,这个标签必须有一个android:name属性,值为继承自BroadcastReceiver类的接收器类!这个标签还有一个子标签为<intent-filter/>,这个标签很重要,是指定接收器需要接收哪种广播。另外,还有配置一个用户权限:<uses-permission/>,具体的值可以参考官方API文档。
易寒
2021/12/23
4670
Android中BroadcastReceiver广播
BroadCastReceiver 简介 广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 Context.sendBroadcast() 、 Context.sendOrderedBroadcast() 来实现的。通常一个广播 Intent 可以被订阅了此 Intent 的多个广播接收者所接收。  广播是一种广泛运用的在应用程序之间传输信息的机制 。而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件;
欢醉
2018/01/22
9750
Android学习--广播机制
        标准广播:  是一种完全异步执行的广播,在广播发出去之后,所有的广播接收器几乎是同一时接收到这条广播。
Mr.RisingSun
2018/07/31
5920
Android学习--广播机制
android学习笔记----自定义广播和系统广播
是一种异步执行的广播,在广播发出之后,所有的广播接收器几乎在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。这种广播效率会比较高,同时也是无法被截断或修改数据的。这种广播是全局性的,其他的应用程序都可以接受到。
砖业洋__
2023/05/06
1.7K0
android学习笔记----自定义广播和系统广播
Android 解析蓝牙广播数据
依据Android  ScanRecord类的源码编写了ScanRecordUtil 类,扫描BLE设备,会获取byte[] scanRecord字节数组,可直接调用ScanRecordUtil.parseFromBytes(scanRecord).toString();获取广播中的信息,其他单独获取某个属性值与上类似,参照ble官方说明:https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile
黄林晴
2019/01/10
2.8K0
Android:BroadcastRecevicer广播类型汇总
注:当使用系统广播时,只需要在注册广播接收者时定义相关的action即可,并不需要手动发送广播,当系统有相关操作时会自动进行系统广播
Carson.Ho
2019/02/22
4.2K0
android输入限制
本文介绍了如何通过TextWatcher实现对EditText的输入的监控,对输入进行限制和矫正。通过继承TextWatcher,在onTextChanged和afterTextChanged中实现输入的监控和限制。具体实现了输入限制功能(限制输入的字符长度、类型等),以及输入矫正功能(将输入的错别字自动矫正为正确的字)。
用户1172465
2018/01/08
1.4K0
Android中广播实践小结
Android系统有一套广播消息机制,方便进行每个应用程序之间的消息通知。而且广播接受者作为Android四大组件之一,经常被使用到。我也接触到广播消息机制,因此有必要对自己所学的知识梳理整理下。
猴哥yuri
2018/08/16
4430
Android 全局广播的使用
广播作为Android一个重要的组成部分,很多功能的实现都依赖于广播,Android系统在发生一些重要事情的时候都会发送广播(电量变化、网络变化等等)。我们也可以在自己得应用程序中发送广播信息,一些能够接受到特定的广播信息的广播接收器就能够接收到对应的广播信息。进而进行事件处理,那么首先我们来看一下广播的基本使用方法。
指点
2019/01/18
2K0
Android 全局广播的使用
android广播注册方式_安卓广播接收器
前面分析了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制。因此,使用这种消息驱动模型的第一步便是订阅消息;而对Android应用程序来说,订阅消息其实就是注册广播接收器。
全栈程序员站长
2022/10/01
1K0
Android自定义权限广播
已经很久没有写文章了,最近有人问我怎么断片(篇),我发现...不扯淡了,开始讲自定义权限广播
包子388321
2020/06/16
1.4K0
Android:BroadcastReceiver广播注册方式汇总
当此App首次启动时,系统会自动实例化mBroadcastReceiver类,并注册到系统中。
Carson.Ho
2019/02/22
2.8K0
《Android》Lesson19-广播1
Week11  2016/11/22上午1-4节 一、复习上次课内容 《Android》Lesson18-用Fragment实现简易新闻应用2(完整) - 简书 1、新建宽屏模拟器,算出dp,参考
用户1733354
2018/05/22
6680
《Android》Lesson20-广播2
Week11  2016/11/24上午1-4节 一、复习上次课内容 《Android》Lesson19-广播1 - 简书 二、自定义广播 (1)新建Project:AndroidLesson20Broadcast2 (2)activity_main.xml添加Button (3)MainActivity为Button写onClickListener Intent intent=newIntent("")中的参数为自定义的Action (4)新建MyBroadcastReceiver类 (5)在Andr
用户1733354
2018/05/22
4570
《Android》Lesson21-广播+SharedPreferences
Week12  2016/11/29上午1-4节 一、复习上节课内容 二、实现强制下线功能 1、TableLayout+LoginActivity (1)设置行间距 android:lineSpacingExtra设置行间距,如”3dp”。 android:lineSpacingMultiplier设置行间距的倍数,如”1.2″。 (2)editText.requestFocus();获取焦点 android editText 获取焦点 - lucky8star的专栏 - 博客频道 - CSDN.NET
用户1733354
2018/05/22
6120
Android广播发送流程深度分析
备注:这个方法在6.0之后移到了 BroadQueue 类中, AMS 的代码也有相应的调整
PhoenixZheng
2018/08/27
1.2K0
Android广播发送流程深度分析
Android入门教程 | 广播机制 Broadcast
Android应用可以通过广播从系统或其他App接收或发送消息。类似于订阅-发布设计模式。当某些事件发生时,可以发出广播。 系统在某些状态改变时会发出广播,例如开机、充电。App也可发送自定义广播。广播可用于应用间的通讯,是IPC的一种方式。
Android_anzi
2021/10/21
1.8K0

相似问题

在Android P设备上无法接收PHONE_STATE广播

143

如何区分SCREEN_ON和PHONE_STATE广播接收器

10

Android Phone_State不接来电

13

用于PHONE_STATE的安卓广播接收器无法正常工作

10

Android广播

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文