Как заблокировать входящие по подстроке идентификатора?
Когда звонят, стандартный гугловский dialer отображает латиницей название организации. Вроде как, это называется "CNAP (Calling Name Presentation)", но я не уверен. Звонок маркирован, хорошо, но что дальше? Мне бы хотелось, чтобы он не проходил по наличию подстроки в названии, например, "bank".
Важно, что стандартный гугловский dialer отображает название организации в оффлайне. И блокировка тоже должна работать в оффлайне. Как этого добиться?
Я мельком почитал, там, типа, есть какой-то CallScreeningService API. В деталях не разбирался, прошу совета.
CallScreeningService работает не так просто как кажется: в onScreenCall() приходит урезанный Call.Details, только номер (handle) и служебные поля, getCallerDisplayName() там пустой.
Название организации, которое рисует гугловский dialer, это его собственный Business Caller ID, не CNAM, и публичного API к нему нет — так что фильтровать офлайн по подстроке названия не выйдет.
Рабочий вариант: свой CallScreeningService, номер из callDetails.getHandle(), сверка со своей локальной базой номер→категория, по совпадению "bank" в имени зовёшь respondToCall с setDisallowCall(true).