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

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

Знаете ли вы какую-нибудь работу от этого? или существует способ получения 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