Как приложение "Телефон" отображает информацию о контактах, которых нет в адресной книге?
Фон
В приложении Google " Телефон " есть опция "Идентификатор звонящего и спам":
Итак, если вам звонит кто-то, которого нет в адресной книге, но он каким-то образом идентифицирован, вы получите имя для него, как таковое:
Начиная с Android M (6.0 - API 23), приложения могут заменить телефонное приложение по умолчанию, а затем также предоставлять альтернативный пользовательский интерфейс при вызове кого-либо или телефонном звонке, расширяя класс InCallService, как показано здесь, который основан на этом.
Эта проблема
Я хочу попытаться отобразить ту же информацию, что и в приложении "Телефон", то есть имя человека / компании, если оно идентифицировало ее (и ее нет в адресной книге).
Что я пробовал
Я попытался покопаться в различных вещах, которые я получаю через API номеронабирателя, но не получилось:
Различные поля и функции: android.telecom.Call класса
Внутри класса Call есть getDetails, поэтому я попытался получить то, что внутри, а также есть statusHints и " label " внутри " statusHints ". Ни у одного из них не было никакой информации (возвращено ноль). Причина, по которой я попытался взглянуть на "statusHints", заключается в том, что именно это я вижу в документах:
Содержит метку состояния и значок, отображаемый в интерфейсе вызова.
Вопросы
Можно ли получить эту информацию CallerId? Если так, то как?
Как приложение "Телефон" делает это? Он должен быть с открытым исходным кодом, поэтому должно быть что-то, что дает ему эту информацию, верно? Будет ли клонирование это как-то получить эту информацию? Может быть, у Google есть собственный сервис для CallerID?
Для чего используются "callDetails" и "statusHints"? Что они предоставляют?
0 ответов
Я считаю, что родное приложение Android для телефона использует API поиска мест от Google. Поскольку вы можете легко найти место по номеру телефона и получить информацию о месте, такую как имя, идентификатор места, formatted_address и многие другие поля, которые вы можете найти в документации
URL запроса: https://maps.googleapis.com/maps/api/place/findplacefromtext/json
Метод запроса: GET
Параметры запроса запроса:
- ключ: ключ API вашего приложения.
- Ввод: текстовый ввод, указывающий место для поиска (например, имя или номер телефона).
- inputtype: тип ввода. Это может быть один из текстовых запросов или номеров телефонов. Номера телефонов должны быть в международном формате (с префиксом "плюс" ("+"), после которого следует код страны, а затем сам номер телефона).
Пример ответа:
{
"candidates" : [
{
"name" : "מלך העופות",
"place_id" : "ChIJ78ko1zBKHRURpwbgUdWc4nU"
},
{
"name" : "Of Yaakov",
"place_id" : "ChIJv3myn4FMHRURUGffcXgxKuw"
}
],
"status" : "OK"
}
Примечание. Такой API в настоящее время недоступен в Google размещает SDK для Android, но вы можете использовать HTTP API непосредственно в своем приложении или создать API в бэкэнде в качестве прокси для API мест. Я предпочитаю более позднюю версию, поскольку в первом решении ключ API развернут в коде приложения, и хакеры могут декомпилировать APK и использовать его по злонамеренным причинам. Из соображений безопасности вы должны ограничить использование ключа API IP-адресом сервера, если вы используете бэкэнд-решение!
Я пытался декомпилировать приложение Dialer, не мог найти конкретную информацию о том, как приложение делает это.
Но эта информация может быть полезной. Пожалуйста, проверь это.
В приложении Dialer есть классы SpamCallDatabase_Impl.smali SpamCallDatabase.smali
и в пакете com.google.android.gms работает служба, предоставляющая списки спама
com.google.android.gms/.telephonyspam.sync.SpamListSyncTaskService
и для идентификатора вызывающего абонента проверьте этот коммит
Это выглядит как приложение для набора номера lineage os и использует разные сервисы для поиска номера телефона, например
https://auskunft.at/
https://www.dastelefonbuch.de/
Я полагаю, что у Google есть своя собственная база данных о спам-звонках, и приложение "Телефон" отправляет номер на свой сервер, и в случае совпадения показывает имя.
Может быть, если ваше приложение может читать уведомления, есть возможность получить это имя. Попробуйте этот пример и измените его в соответствии с вашими потребностями
Для этого вы можете проверить работу таких приложений, как Truecaller. Truecaller действует по сценарию "давай и бери"... Вы хотите, чтобы эти неизвестные номера затем были разделены с контактами вашей телефонной книги. Теперь, очевидно, каждый, кто установил приложение, сдал свою телефонную книгу. Данные получены из миллионов пользователей, которые загрузили приложение truecaller на свои смартфоны. В рамках соглашения с конечным пользователем приложение truecaller просит пользователя разрешить доступ к адресной книге / контактам пользователя на смартфоне. Эти данные затем загружаются приложением на серверы компании. После прохождения нескольких алгоритмов сопоставления / уточнения данных, эти данные становятся доступными для поиска среди всех пользователей по-настоящему.
В приложении Google Phone по умолчанию предусмотрена функция Использовать идентификатор звонящего и защиту от спама. Некоторые из этих шагов работают только на Android 6.0 и выше.
Когда вы делаете или получаете звонок с включенным идентификатором звонящего и защитой от спама, вы можете видеть информацию о звонящих или не входящих в ваши контакты компаниях или предупреждения о потенциальных звонках спама.
Чтобы использовать идентификатор звонящего и защиту от спама, вашему телефону может потребоваться отправить информацию о ваших звонках в Google.
Выключите или снова включите идентификацию вызывающего абонента и защиту от спама
Идентификатор звонящего и защита от спама включены по умолчанию. Вы можете отключить его.
Чтобы использовать идентификатор звонящего и защиту от спама, вашему телефону может потребоваться отправить информацию о ваших звонках в Google. Он не контролирует, показывает ли ваш номер, когда вы звоните.
Идентификатор вызывающего абонента от Google показывает названия компаний и служб, перечисленных в Google My Business. Он также ищет совпадения в любом каталоге, в котором отображается информация о вызывающем абоненте для рабочих или школьных учетных записей.
Согласно вашему решению, Google не предоставляет такую поддержку, как вы хотите. вам нужно создать свою собственную функцию и сохранить спам и другие контактные данные на вашей стороне.