"Phone" 应用如何显示不在通讯录中的联系人信息?
How does "Phone" app show information of contacts that are not on the address book?
背景
在Google的“Phone”应用中,有一个选项"Caller ID & spam":
因此,如果您接到不在地址簿上的某人或某个组织的电话,但它以某种方式被识别,您会得到一个名称,因此(称为“+972-035283487”) :
自从 Android M (6.0 - API 23) 以来,应用程序可以替换默认的 phone 应用程序,然后在您打电话给某人时也提供替代 UI或通过扩展 InCallService class, as demonstrated here which is based on here 获得 phone 呼叫。
问题
我想尝试显示与 Phone 应用程序相同的信息,即 person/company 的名称,以防它识别它(并且它不在地址簿上)。
我试过的
我试图挖掘通过拨号器 API 获得的各种信息,但失败了:
各种字段和功能:android.telecom.Call class
有 getDetails inside of the Call class, so I tried to get what's inside there, and there is also statusHints and "label" inside the "statusHints" 。其中 None 有任何信息(返回 null)。我试图查看 "statusHints" 的原因是因为那是什么我在文档中看到:
Contains status label and icon displayed in the in-call UI.
- 在 "Phone" 应用程序上,按 "Learn more" 会转到一个网站 (here),其中包含我认为可能是数据来源的链接,但我不认为该应用程序本身使用它。相反,我认为它使用了 Google.
的东西
问题
这个CallerId信息可以获取吗?如果是,如何?
Phone 应用程序是如何做到的?它应该是开源的,所以必须有一些东西可以为它提供这些信息,对吧?克隆它会以某种方式获得此信息吗?也许 Google 有自己的来电显示服务?
"callDetails"和"statusHints"有什么用?他们提供什么?
我相信 Android 的原生 phone 应用正在使用 Google 的地点搜索 API。因为您可以通过 phone 编号轻松搜索地点并获取地点详细信息,例如名称、地点 ID、formatted_address 以及您可以在 the documentation
中找到的许多其他字段
要求URL:
https://maps.googleapis.com/maps/api/place/findplacefromtext/json
请求方式: GET
请求查询参数:
- key: Your application's API key.
- input: The text input specifying which place to search for (for example a name or phone number).
- inputtype: The type of input. This can be
one of either textquery or phonenumber. Phone numbers must be in
international format (prefixed by a plus sign ("+"), followed by the
country code, then the phone number itself).
响应示例:
{
"candidates" : [
{
"name" : "מלך העופות",
"place_id" : "ChIJ78ko1zBKHRURpwbgUdWc4nU"
},
{
"name" : "Of Yaakov",
"place_id" : "ChIJv3myn4FMHRURUGffcXgxKuw"
}
],
"status" : "OK"
}
注意:
这样的 API 目前在 Google places SDK for Android 中不可用,但您可以直接在您的应用程序中使用 HTTP API 或者您可以制作一个 API 在后端作为地方 API 的代理。我更喜欢后面的版本,因为在第一个解决方案中 API 密钥部署在应用程序代码中,黑客可以反编译 APK 并出于恶意原因使用它。出于安全原因,如果您使用后端解决方案,您必须将 API 密钥的使用限制为服务器的 IP 地址!
我相信 Google 有自己的垃圾电话数据库,Phone 应用程序将号码发送到它的服务器,如果有匹配,它会显示姓名。
也许,如果您的应用可以读取通知,则有可能检索该名称。尝试 this 示例并根据需要进行修改
我尝试反编译 Dialer 应用程序,找不到有关该应用程序如何运行的具体信息。
但此信息可能会有用。请检查。
在拨号程序中,有类 SpamCallDatabase_Impl.smali SpamCallDatabase.smali
com.google.android.gms 应用程序包中有服务 运行,它提供垃圾邮件列表
com.google.android.gms/.telephonyspam.sync.SpamListSyncTaskService
对于来电显示,请检查此提交
这看起来像血统的拨号器应用程序os
并且它使用不同的服务进行 phone num 查找,例如
https://auskunft.at/
https://www.dastelefonbuch.de/
Google Phone app is provided a feature of Use caller ID & spam protection by default. Some of these steps work only on Android 6.0 及以上。
当您拨打或接听来电显示和垃圾邮件保护功能时,您可以看到有关来电者或企业的信息,这些信息不在您的联系人中,或者有关潜在垃圾邮件呼叫者的警告。
要使用来电显示和垃圾邮件保护功能,您的 phone 可能需要将您的通话信息发送至 Google。
关闭或重新打开来电显示和垃圾邮件保护
默认情况下,来电显示和垃圾邮件保护处于启用状态。您可以选择关闭它。
要使用来电显示和垃圾邮件保护功能,您的 phone 可能需要将您的通话信息发送至 Google。它不控制您拨打电话时是否显示您的号码。
Google 的来电显示显示带有 Google 我的企业列表的公司和服务的名称。它还会在显示工作或学校帐户的呼叫者信息的任何目录中查找匹配项。
根据您的解决方案,Google 没有提供您想要的这种支持。您需要创建自己的功能并在您身边保存垃圾邮件和其他联系方式。
您可以为此检查 Truecaller 等应用程序的工作情况。 Truecaller 在一个让步的场景中行动......你想要那些未知的号码然后你必须放弃你的 phone 书籍联系人......现在显然每个安装了该应用程序的人都交出了他的 phone 书籍。这些数据是从数百万在其智能 phone 上下载了 truecaller 应用程序的用户众包而来的。作为最终用户协议的一部分,truecaller 应用程序要求用户允许访问智能 phone 上的用户地址 book/contacts。然后,该应用程序会将这些数据上传到公司的服务器。经过数种数据 matching/refining 算法后,所有 truecaller 用户都可以使用此数据进行搜索。
背景
在Google的“Phone”应用中,有一个选项"Caller ID & spam":
因此,如果您接到不在地址簿上的某人或某个组织的电话,但它以某种方式被识别,您会得到一个名称,因此(称为“+972-035283487”) :
自从 Android M (6.0 - API 23) 以来,应用程序可以替换默认的 phone 应用程序,然后在您打电话给某人时也提供替代 UI或通过扩展 InCallService class, as demonstrated here which is based on here 获得 phone 呼叫。
问题
我想尝试显示与 Phone 应用程序相同的信息,即 person/company 的名称,以防它识别它(并且它不在地址簿上)。
我试过的
我试图挖掘通过拨号器 API 获得的各种信息,但失败了:
各种字段和功能:android.telecom.Call class
有 getDetails inside of the Call class, so I tried to get what's inside there, and there is also statusHints and "label" inside the "statusHints" 。其中 None 有任何信息(返回 null)。我试图查看 "statusHints" 的原因是因为那是什么我在文档中看到:
Contains status label and icon displayed in the in-call UI.
- 在 "Phone" 应用程序上,按 "Learn more" 会转到一个网站 (here),其中包含我认为可能是数据来源的链接,但我不认为该应用程序本身使用它。相反,我认为它使用了 Google. 的东西
问题
这个CallerId信息可以获取吗?如果是,如何?
Phone 应用程序是如何做到的?它应该是开源的,所以必须有一些东西可以为它提供这些信息,对吧?克隆它会以某种方式获得此信息吗?也许 Google 有自己的来电显示服务?
"callDetails"和"statusHints"有什么用?他们提供什么?
我相信 Android 的原生 phone 应用正在使用 Google 的地点搜索 API。因为您可以通过 phone 编号轻松搜索地点并获取地点详细信息,例如名称、地点 ID、formatted_address 以及您可以在 the documentation
中找到的许多其他字段要求URL: https://maps.googleapis.com/maps/api/place/findplacefromtext/json
请求方式: GET
请求查询参数:
- key: Your application's API key.
- input: The text input specifying which place to search for (for example a name or phone number).
- inputtype: The type of input. This can be one of either textquery or phonenumber. Phone numbers must be in international format (prefixed by a plus sign ("+"), followed by the country code, then the phone number itself).
响应示例:
{
"candidates" : [
{
"name" : "מלך העופות",
"place_id" : "ChIJ78ko1zBKHRURpwbgUdWc4nU"
},
{
"name" : "Of Yaakov",
"place_id" : "ChIJv3myn4FMHRURUGffcXgxKuw"
}
],
"status" : "OK"
}
注意: 这样的 API 目前在 Google places SDK for Android 中不可用,但您可以直接在您的应用程序中使用 HTTP API 或者您可以制作一个 API 在后端作为地方 API 的代理。我更喜欢后面的版本,因为在第一个解决方案中 API 密钥部署在应用程序代码中,黑客可以反编译 APK 并出于恶意原因使用它。出于安全原因,如果您使用后端解决方案,您必须将 API 密钥的使用限制为服务器的 IP 地址!
我相信 Google 有自己的垃圾电话数据库,Phone 应用程序将号码发送到它的服务器,如果有匹配,它会显示姓名。
也许,如果您的应用可以读取通知,则有可能检索该名称。尝试 this 示例并根据需要进行修改
我尝试反编译 Dialer 应用程序,找不到有关该应用程序如何运行的具体信息。
但此信息可能会有用。请检查。
在拨号程序中,有类 SpamCallDatabase_Impl.smali SpamCallDatabase.smali
com.google.android.gms 应用程序包中有服务 运行,它提供垃圾邮件列表
com.google.android.gms/.telephonyspam.sync.SpamListSyncTaskService
对于来电显示,请检查此提交
这看起来像血统的拨号器应用程序os 并且它使用不同的服务进行 phone num 查找,例如
https://auskunft.at/
https://www.dastelefonbuch.de/
Google Phone app is provided a feature of Use caller ID & spam protection by default. Some of these steps work only on Android 6.0 及以上。
当您拨打或接听来电显示和垃圾邮件保护功能时,您可以看到有关来电者或企业的信息,这些信息不在您的联系人中,或者有关潜在垃圾邮件呼叫者的警告。
要使用来电显示和垃圾邮件保护功能,您的 phone 可能需要将您的通话信息发送至 Google。
关闭或重新打开来电显示和垃圾邮件保护
默认情况下,来电显示和垃圾邮件保护处于启用状态。您可以选择关闭它。
要使用来电显示和垃圾邮件保护功能,您的 phone 可能需要将您的通话信息发送至 Google。它不控制您拨打电话时是否显示您的号码。
Google 的来电显示显示带有 Google 我的企业列表的公司和服务的名称。它还会在显示工作或学校帐户的呼叫者信息的任何目录中查找匹配项。
根据您的解决方案,Google 没有提供您想要的这种支持。您需要创建自己的功能并在您身边保存垃圾邮件和其他联系方式。
您可以为此检查 Truecaller 等应用程序的工作情况。 Truecaller 在一个让步的场景中行动......你想要那些未知的号码然后你必须放弃你的 phone 书籍联系人......现在显然每个安装了该应用程序的人都交出了他的 phone 书籍。这些数据是从数百万在其智能 phone 上下载了 truecaller 应用程序的用户众包而来的。作为最终用户协议的一部分,truecaller 应用程序要求用户允许访问智能 phone 上的用户地址 book/contacts。然后,该应用程序会将这些数据上传到公司的服务器。经过数种数据 matching/refining 算法后,所有 truecaller 用户都可以使用此数据进行搜索。