Android Outbound Caller ID - вкл / выкл - PullRequest
       13

Android Outbound Caller ID - вкл / выкл

3 голосов
/ 24 сентября 2010

Я хочу скрыть / показать свой идентификатор вызывающего абонента из своей активности программно. Я пытался найти это в документации Android, но без удачи. Может быть, у вас есть идеи?

Ответы [ 5 ]

4 голосов
/ 13 декабря 2010

Я разместил вопрос об этом в группе 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 может быть единственным способом найти ответ, и я еще не пытался это сделать.

3 голосов
/ 29 февраля 2012

Мне удалось получить диалог настроек дополнительных вызовов. Объяснение ниже:

Хотя это выглядит как часть настроек, на самом деле это часть родного PhoneApp. Если вы посмотрите на AndroidManifest.xml в PhoneApp, вы увидите, что Activity GsmUmtsAdditionalCallOptions определил IntentFilter для android.intent.action.MAIN.

Итак, код, который я проверил для правильной работы на нескольких телефонах:

Intent additionalCallSettingsIntent = new Intent("android.intent.action.MAIN");
ComponentName distantActivity = new ComponentName("com.android.phone", "com.android.phone.GsmUmtsAdditionalCallOptions");
additionalCallSettingsIntent.setComponent(distantActivity);
startActivity(additionalCallSettingsIntent);
2 голосов
/ 25 мая 2011

Если трюк # 31 # подходит для ваших нужд в одном вызове, вы можете добавить широковещательный приемник, который прослушивает уведомление об исходящем вызове и изменяет номер так, чтобы он включал # 31 # в начале, прежде чем он будет набран. Android позволяет менять номер на этом пути.

Работает только в том случае, если по умолчанию включена идентификация вызывающего абонента и поддержка сети # 31 #, и вы хотите отключить его с помощью, скажем, виджета.

1 голос
/ 01 января 2011

Идентификатор вызывающего абонента относится к конкретной сети, а не к тому, что телефон контролирует.Фактически в определенных конфигурациях мобильной сети телефон даже не «знает» свой номер телефона.

Некоторые сети поддерживают отправку команды активации / деактивации идентификатора сети.В GSM это обычно # 31 #.Он может быть постоянным или для каждого вызова.

  1. Постоянный запрос сети на скрытие идентификатора вызывающего абонента для всех вызовов.
  2. Для каждого вызова сеть запрашивает скрытие только идентификатора вызывающего абонентадля этого звонка.Последнее достигается путем добавления префикса к номеру, вызываемому # 31 #, поэтому, например, вызов # 31 # 85432786426 вызовет 85432786426, скрывающего абонента.

Некоторые сети поддерживают обе, некоторые поддерживают только одну из них, а некоторые не включают ее.Испытайте свою удачу и попробуйте добавить префикс набранного номера к # 31 # и посмотреть, работает ли он.

http://www.gsm -security.net / faq / gsm-caller-id-clip-clir.shtml

0 голосов
/ 24 мая 2011

Если вам нужен ярлык для дополнительных настроек вызова, вы можете использовать App Cut и выбрать настройки GSM. Это позволит разместить ярлык на главном экране.

...