Все ваши идеи возможны.
1. получить доступ к телефонной книге: используя контент-провайдера, есть пример от разработчика Android.
2. обнаружить входящий вызов: расширить PhoneStateListener
и переписать его функцию onCallStateChanged (int state, String incoming Number)
, где состояние - это текущее состояние телефона, когда оно равно CALL_STATE_RINGING
, что означает, что входящий вызов, в этой функции вы можете сравнить входящий номер (переменная входящий номер ) с вашим белым списком, если он совпадает, выполните свою собственную операцию, например, отключить звук или отменить его.
Вам необходимо установить разрешения для всего этого в файле манифеста.