使用安卓从SIM卡获取MSISDN

11

我正在尝试使用Android从SIM卡中检索MSISDN,我尝试了getLine1Number(),但这只返回存储在“我的电话信息”或“所有者信息”部分的MSISDN,如果这些信息未被存储,则Android将返回空值。

您知道任何解决方法吗?或者是否有一种方法可以从SIM号码(getSimSerialNumber())推导出MSISDN?

一如既往,期待一个确定的答案!!! :)

1个回答

20

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


是的,我也发现了这个问题…但是如何使用安卓从 SIM 卡中检索 IMSI 呢?有什么想法吗? - megazoid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接