Я разместил вопрос об этом в группе Google Android и не получил абсолютно никаких ответов.Я также видел пару других вопросов по SO, у которых также не было ответов (или ни одного, которые не работают).
Я пришел к выводу, что это просто невозможно.Я рассуждаю так ...
Если я захожу в Настройки -> Вызов -> Дополнительные настройки, я вижу AlertDialog с заголовком заголовка «Настройки вызова», и я вижу круговой индикатор прогресса и сообщение с надписью«Чтение настроек ...».
Мне приходит в голову, что в этот момент мой телефон обращается к моему провайдеру телефона / сети.Получившееся диалоговое окно «Выбор» дает мне варианты «Сетевое значение по умолчанию», «Скрыть номер» и «Показать номер», и когда я делаю выбор (или даже если я просто «отменяю» диалоговое окно), я получаю еще один AlertDialog с круговым прогрессоминдикатор с сообщением «Обновление настроек ...».
Короче говоря, кажется, что настройка Caller ID не является полностью «локальной» по отношению к настройкам телефона и зависит от взаимодействия с провайдером и, по какой-либо причине,В результате этого API-интерфейсы Android не позволяют манипулировать этим программно.
Я не уверен, что это что-то из списка «Задачи» для будущих версий Android или если есть законные/ последствия для безопасности, позволяющие сделать это, или какая-либо другая причина.Как бы то ни было, я пока не нашел никого, кто мог бы объяснить, почему у TelephonyManager (например) нет способа просто переключить это.
РЕДАКТИРОВАТЬ: Не повезло и при получении AlertDialog с дополнительными настройками со стандартными API.
Причина, по которой я говорю, заключается в том, что можно открыть различные части «Настройки» устройства, например, в одном из моих приложенийЯ использую android.provider.Settings.ACTION_WIRELESS_SETTINGS в конструкторе Намерения, переданного startActivity ().Откроется страница настроек для включения / выключения Wi-Fi, мобильного интернета и Bluetooth.
android.provider.Settings имеет другие подобные действия для других страниц настроек, но для «Вызова» даже нет ни одногоЗвоните -> Дополнительные настройки и ничего для AlertDialog, чтобы вы могли выбрать, чтобы скрыть / показать исходящий идентификатор вызывающего абонента.
Если это можно сделать, то это должен быть недокументированный API, если я полностью не пропустил его(Я долго смотрел)Я подозреваю, что изучение исходного кода Android может быть единственным способом найти ответ, и я еще не пытался это сделать.