Получить MSISDN с SIM-карты с помощью Android

Я пытаюсь получить MSISDN с SIM-карты с помощью Android, я пробовал getLine1Number() но это возвращает только MSISDN, хранящийся в разделе "Информация о телефоне" или "информация о владельце", если эта информация не хранится, Android вернет значение null.

знаете ли вы обойти это? или есть способ получить MSISDN из номера SIM-карты (getSimSerialNumber())?

ждет твердый ответ, как всегда !!! :)

1 ответов


на MSISDN (Он же номер мобильного телефона) не является SIM-данными, поэтому вы не можете его получить. SIM-карта имеет IMSI (International Mobile Subsriber Identity), который отправляется в HLR (Home Location Register), ответственный за выполнение сопоставления MSISDN / IMSI. Операторы мобильной связи могли бы хранить MSISDN на SIM-карте, если бы захотели, но поскольку это не требуется в протоколе GSM, это не так.

извините!

для получения дополнительной информации посмотрите на это обсуждение получение номера телефона и как android получить MSISDN

EDIT:

чтобы получить номер IMSI,

 TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
 String imsi = mTelephonyMgr.getSubscriberId();

но несколько телефонов возвращают только 6 цифр вместо 15. Итак, вы можете использовать,

согласно этому сообщению: http://www.anddev.org/tinytut_-_getting_the_imsi_-_imei_sim-device_unique_ids-t446.html

String imei = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMSI);

Подробнее смотрите на этот Вопрос и класс SystemProperties