我正在尝试使用Android从SIM中检索MSISDN,我尝试过 getLine1Number(),但这只返回存储在“我的手机信息”或“所有者信息”部分中的MSISDN,如果这些信息是未存储,Android将返回空值。
你知道从中有什么工作吗?或者有没有办法从SIM号码中获取MSISDN( getSimSerialNumber())?
一如既往地等待坚实的答案! :)
答案 0 :(得分:20)
MSISDN (也称为手机号码)不是SIM数据,因此您无法检索它。 SIM卡具有IMSI(国际移动子用户标识),其被发送到HLR(归属位置寄存器),负责进行映射 MSISDN / IMSI 。 移动电话运营商可以根据需要将MSISDN存储在SIM卡上,但由于GSM协议中不需要它,因此不是。
抱歉!
有关详细信息,请查看此讨论Getting phone number 以及How android get MSISDN
修改强>
获取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);
有关详细信息,请查看This Question和class SystemProperties