我正在尝试使用Android从SIM卡中检索MSISDN,我尝试了getLine1Number(),但这只返回存储在“我的电话信息”或“所有者信息”部分的MSISDN,如果这些信息未被存储,则Android将返回空值。
您知道任何解决方法吗?或者是否有一种方法可以从SIM号码(getSimSerialNumber())推导出MSISDN?
一如既往,期待一个确定的答案!!! :)
我正在尝试使用Android从SIM卡中检索MSISDN,我尝试了getLine1Number(),但这只返回存储在“我的电话信息”或“所有者信息”部分的MSISDN,如果这些信息未被存储,则Android将返回空值。
您知道任何解决方法吗?或者是否有一种方法可以从SIM号码(getSimSerialNumber())推导出MSISDN?
一如既往,期待一个确定的答案!!! :)
MSISDN(也称为手机号码)不是SIM卡数据,因此无法检索。 SIM卡有一个IMSI(国际移动用户识别码),发送到负责映射MSISDN / IMSI 的HLR(家庭位置寄存器)。
移动电话运营商可以在SIM卡上存储MSISDN,但由于GSM协议不需要它,因此不会存储。
抱歉!
欲了解更多信息,请查看此讨论 Getting phone number 以及How android get MSISDN
编辑:
要获取IMSI号码,请执行以下操作:
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imsi = mTelephonyMgr.getSubscriberId();
但是只有少数手机返回6位数字而不是15位。因此,您可以使用以下方法:
根据此帖子:
String imei = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMSI);
更多信息请查看此问题和class SystemProperties