Получить 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