问题标签 [android-phone-call]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何将来电活动置于自定义活动前面
我在我的 android 应用程序中实现了一个自定义屏幕锁定活动,该活动在一定时间后锁定屏幕,需要一个密码才能将其解锁并使用该应用程序。当屏幕被锁定并且收到来电时出现问题,因为此锁定屏幕仍在来电活动之上,并且如果我通过给定的密码解锁屏幕,我的自定义应用程序将显示而不是默认的来电弹出窗口。这是我在锁定屏幕活动中使用的 layoutParameters,以便在启动时将其置于所有内容的前面。
当屏幕被锁定时,我是否可以在我的应用程序顶部带来默认的电话呼叫活动,或者当我通过给定的密码解锁屏幕时至少将它放在前面?
android - 指定哪个应用响应 Intent startActivity 调用
我正在为我的工作开发一个简单的 android 应用程序
有一个按钮,点击后会触发一系列电话号码的 ACTION_CALL 意图。问题是,我的手机正在打开 Skype 以尝试拨打电话,我希望它使用内置的本地电话应用程序。这是运行意图调用的代码:
我意识到“tel:”协议可以同时适用于 Skype 和本机电话应用程序,但我怎样才能使应用程序始终可以使用本机电话应用程序打开它?
android - 如何在拨出电话被接听时收到通知?
背景
当电话被接听和挂断时,我需要得到通知。
对于来电,我使用附带的TelephonyManager.ACTION_PHONE_STATE_CHANGED
Intent TelephonyManager.EXTRA_STATE
。
问题
对于拨出电话,您会TelephonyManager.ACTION_PHONE_STATE_CHANGED
在开始拨号后立即收到回拨,但在接听电话时不会收到回拨。
我在互联网上搜索过,所有人都声称这是不可能的。
然而,我注意到一些通话录音应用程序(例如“猛兽录音机”)已经设法克服了这一点,并以某种方式确定了接听电话的时刻。
我试过的
我试图注册一个 ContentObserver 来调用日志,但这并没有帮助,因为它只在通话结束时才会收到回调。
为了检查问题,这是我玩过的一些代码:
MainActivity.kt
PhoneBroadcastReceiver.kt
显现
问题
这些应用程序是如何工作的?当拨出电话被接听时,他们如何得到通知?
c# - 在 LockState 中通过 PhoneScreen 显示 Toast
我们的目标是在来电发生时表示祝酒。当设备被锁定并且有来电时,这将不起作用。然后在“锁定的全屏来电视图”后面可以看到吐司。
我们尝试了不同的方法,结果相同:
- PhoneCallListener / BroadCastReciver
- 使用带有一些标志(ShowOnLockScreen 等)的新 Intent 而不是敬酒
允许:
PhoneCallListener 的设置:
我们知道一些应用程序可以在“锁定的全屏来电视图”上成功显示 toast ,但它们是用 java 编写的......它们也没有做任何特别的事情,然后是 Toast.MakeText(....)。
编辑: =>PhoneStateListener 生活在后台。从服务开始。
服务如何启动?
如何调用 PhoneCallDetector?
谢谢你帮助我:-)
android - 来电未显示在锁定屏幕上
我已经创建了一个锁屏应用程序,当我尝试解锁手机时,我的锁屏活动正在显示,但问题是当有人打电话给我时,同时如果锁屏活动正在显示,来电没有显示。
谁能告诉我,有什么问题吗?
清单文件
android - 来电和闹钟未显示在锁定屏幕上
我创建了一个锁屏应用程序,当我尝试解锁手机时,我的锁屏活动正在显示,但问题是当有人打电话给我时,如果锁屏活动正在显示,来电或警报没有显示。
谁能告诉我,有什么问题吗?
清单文件:
android - 回到 com.android.incallui 中的活动 InCallActivity
我尝试在界面上添加一个按钮,以便在通话期间返回电话 InCallActivity。在三星手机上,活动位于“com.android.incallui”或“com.samsung.android.incallui”包中。
所以我尝试了以下方法:
但getLaunchIntentForPackage
返回 null,即使包在手机上可用。
我也尝试使用ACTION_CALL_BUTTON
但它会启动拨号程序,而不是带回当前的通话活动。
您是否看到使用 startActivity 或类似方法返回当前调用视图的可能性?
谢谢
android - 在 Nougat 中自动接听来电
有没有办法在没有root权限的情况下以编程方式在Android 7.0中接听来电?我尝试了以下方式来接听来电。
android - 是什么让 BroadcastReceiver 这么晚才得到它的意图?
背景
我们有一个大型应用程序,它具有各种功能,使用多个库,并使用以下方式处理电话BroadcastReceiver
:
问题
最近我注意到,如果我们使用最近的任务关闭应用程序,BroadcastReceiver
手机开始响铃后的接收意图相当长的时间(3-5 秒)。
这是一个问题,因为应用程序需要立即处理电话。
我尝试并发现的
在 POC 中,它似乎工作得很好。即使在我的一个用于电话录音的存储库(此处
BroadcastReceiver
)上,如果我在其中添加日志而不是真正的逻辑,我也可以看到它立即得到处理。我什至将大型应用程序的所有权限添加到我制作的这个示例应用程序中(并授予它们),它仍然可以正常工作。可悲的是,添加大型应用程序使用的库可能需要大量时间来添加和测试我在想也许从 Application 扩展的类(或者
MultiDexApplication
,准确地说)花费了太多时间,所以我在那里添加了一个日志(开始onCreate
)。确实需要一点时间(一秒左右),但是过一会就会显示日志,和log的差别BroadcastReceiver
很小。所以问题应该是由比应用程序或BroadcastReceiver
.我想这可能是因为我们使用了多索引。我试图禁用它,但它没有帮助。我认为它甚至不会影响它,因为我已经在 Pixel 2 上的 Android P 上进行了尝试。
我试图设置
BroadcastReceiver
. 尝试将其设置为 999 (这是允许的最大值),甚至设置为 2147483647 ,但这些都没有帮助。我认为操作系统可能正在为应用程序分配大量内存,这可能需要一些时间,但我知道即使在我从最近关闭应用程序之后,侦听相同 Intent 的其他应用程序(例如 TrueCaller)也能正常工作任务。我还测试了应用程序使用了多少内存,以及 TrueCaller 使用了多少。该应用在我的 Pixel 2 上平均使用 33MB 的总 RAM,而 TrueCaller 使用 2MB。我从“内存使用”的开发人员选项屏幕中获得了这些值。奇怪的是,即使从头开始启动应用程序,它也会告诉最大 RAM 使用量很大(大约 1GB),但我从未在分析器中看到它,甚至没有关闭(大约 200MB)。我认为这个屏幕不是检查内存使用情况的可靠方法。
我认为也许将应用程序排除在电池优化之外可能会有所帮助,但事实并非如此。即使是从用户那里请求这个的 TrueCaller,在这种情况下也不需要它。无需设置即可正常工作。
我认为唯一的原因可能是应用程序使用的库。有很多,但我想知道什至在调用扩展 Application 的类之前会影响应用程序......遗憾的是,有这么多,需要花费大量时间将它们全部添加到 POC 项目中。我想我会这样做,但我想知道这是否真的是原因。
问题
什么可能会影响
BroadcastReceiver
这么晚才得到它的意图?这可能是我提到的事情之一吗?为什么“内存使用”屏幕看起来如此不可靠并且与我在 IDE 的分析器上看到的相矛盾?这可能是迟到的意图(操作系统的巨大内存分配)的原因吗?
编辑:我注意到一些库初始化在扩展应用程序的类的 onCreate 调用中花费了太多时间,所以我将其中一些放在后台线程中,甚至删除了一些。
似乎更好,但问题是应用程序在电话响起后触发得太晚,因此问题仍然存在。