Что возвращает getLine1Number()
метод TelephonyManager
с двумя SIM-телефонами, например LG Optimus Net Dual
?
Что возвращает getLine1Number() с помощью двух SIM-телефонов?
Ответ 1
Вы получите только один номер... может быть!
Во-первых, какой номер вы возвращаете, зависит от устройства.
Но не менее важно, получите ли вы номер вообще и будет ли этот номер номером телефона, совершенно непредсказуем. Это зависит от SIM-карты и оператора.
В одном из моих приложений я начал использовать телефонный номер как уникальный идентификатор, так как я мог ожидать, что пользователь сможет легко напомнить этот номер. Для большинства операторов в Азии, Австралии и некоторых странах Европы телефонный номер (line1number()) просто не сохраняется на SIM-карте! С другими вы можете получить строку нулей. Или номер, отформатированный таким образом, который может иметь смысл локально, но может испортить вашу логику приложения.
Ответ 2
Android не поддерживает двойные сим-устройства. Смотрите: Обнаружение статуса двух SIM-карт в телефоне с двумя SIM-картами
Как кто-то сказал, что вы можете получить поддержку от производителей устройств.
Дополнительно getLine1Number() не гарантирует возврат номера телефона. Он просто возвращает то, что операторы хранят в карточке, и некоторые операторы не беспокоятся о заполнении этого номера. Поэтому с некоторыми сим-картами это просто вернет null.
Если вы предоставите подробную информацию о том, чего вы пытаетесь достичь, мы сможем предложить лучшее решение.
Ответ 3
SDK по умолчанию не поддерживает обработку двух SIM-телефонов. Функция вернет только одно число, скорее всего, с первой активной SIM-карты.
Однако производитель иногда выдаёт SDK для работы с этими вещами, возможно, вам стоит взглянуть на это.