【发布时间】:2019-07-24 04:19:31
【问题描述】:
背景
在 Google 的“Phone”应用程序中,有一个“来电显示和垃圾邮件”选项:
因此,如果您接到来自不在通讯簿上的某人或某个组织的电话,但它以某种方式被识别,您会得到一个名称,例如(称为“+972-035283487”):
自 Android M (6.0 - API 23) 以来,应用程序可以替换默认的电话应用程序,然后通过扩展 InCallService 类,还可以在您打电话或接听电话时提供替代 UI,如 here 所示这是基于here。
问题
我想尝试显示与“电话”应用程序相同的信息,即个人/公司的名称,以防被识别(并且不在通讯簿上)。
我尝试过的
我试图挖掘通过拨号器的 API 获得的各种东西,但失败了:
各种字段和函数:android.telecom.Call 类
Call 类里面有getDetails,所以我试图得到里面的内容,并且在 "statusHints" 里面还有 statusHints 和 "label" 。这些都没有任何信息(返回 null)。我试图查看“statusHints”的原因是因为这就是我在文档上看到的:
包含通话界面中显示的状态标签和图标。
- 在“电话”应用程序中,按“了解更多”会转到一个网站 (here),其中包含我认为可能是数据来源的链接,但我认为应用程序本身不会使用它。相反,我认为它使用了 Google 的一些东西。
问题
是否可以获得此 CallerId 信息?如果有,怎么做?
电话应用程序是如何做到的?它应该是开源的,所以必须有一些东西可以提供这些信息,对吧?克隆它会以某种方式获得这些信息吗?也许 Google 有自己的 CallerID 服务?
“callDetails”和“statusHints”有什么用?他们提供什么?
【问题讨论】:
-
可能来自 Google 的地点数据库。类似的问题在这里:stackoverflow.com/questions/16463399/…
-
你查过号码对应的content provider数据吗?
-
@ChristosThemelis 你怎么知道?你检查过吗?它是否返回相同的信息?
-
@SarthakMittal 你什么意思?哪个内容提供商?如何检查?
-
@androiddeveloper 我在手机上注意到拨号器的一些我交叉检查的结果与出现在 Google 地方的名称相匹配。我没有交叉检查所有结果
标签: android android-dialer caller-id