Что возвращает getLine1Number() с помощью двух SIM-телефонов?

Что возвращает getLine1Number() метод TelephonyManager с двумя SIM-телефонами, например LG Optimus Net Dual?

Ответ 1

Вы получите только один номер... может быть!

Во-первых, какой номер вы возвращаете, зависит от устройства.

Но не менее важно, получите ли вы номер вообще и будет ли этот номер номером телефона, совершенно непредсказуем. Это зависит от SIM-карты и оператора.

В одном из моих приложений я начал использовать телефонный номер как уникальный идентификатор, так как я мог ожидать, что пользователь сможет легко напомнить этот номер. Для большинства операторов в Азии, Австралии и некоторых странах Европы телефонный номер (line1number()) просто не сохраняется на SIM-карте! С другими вы можете получить строку нулей. Или номер, отформатированный таким образом, который может иметь смысл локально, но может испортить вашу логику приложения.

Ответ 2

Android не поддерживает двойные сим-устройства. Смотрите: Обнаружение статуса двух SIM-карт в телефоне с двумя SIM-картами

Как кто-то сказал, что вы можете получить поддержку от производителей устройств.

Дополнительно getLine1Number() не гарантирует возврат номера телефона. Он просто возвращает то, что операторы хранят в карточке, и некоторые операторы не беспокоятся о заполнении этого номера. Поэтому с некоторыми сим-картами это просто вернет null.

Если вы предоставите подробную информацию о том, чего вы пытаетесь достичь, мы сможем предложить лучшее решение.

Ответ 3

SDK по умолчанию не поддерживает обработку двух SIM-телефонов. Функция вернет только одно число, скорее всего, с первой активной SIM-карты.

Однако производитель иногда выдаёт SDK для работы с этими вещами, возможно, вам стоит взглянуть на это.