通过电话卡从SIM卡获取电话号码

时间:2018-08-27 14:47:19

标签: android

我想知道如何从sim卡而不是sim序列号中获取实际电话号码。我也尝试过(manager.getLine1Number),但它给了我空值。

2 个答案:

答案 0 :(得分:1)

空引用可能表示无法访问电话号码。

文档:

  

请注意,访问某些电话信息受权限保护。您的应用程序无法访问受保护的信息,除非它具有在清单文件中声明的适当权限。在应用权限的位置,将在访问受保护信息的方法中注明这些权限。

所需权限:

  

READ_PHONE_STATE,READ_SMS,READ_PHONE_NUMBERS link to method doc

我还发现了另一个问题,该问题与您命名的方法“不起作用”时非常相似。那里也有人提到一个重复的问题。这也可能会有所帮助: Link

如果那里的代码没有帮助您,我建议您检查方法的确切文档以查找详细信息,以及为什么返回空引用。

答案 1 :(得分:1)

参考:How to get the mobile number of current sim card in real device?

asset()

The documentation for getLine1Number()说,如果数字“不可用”,则此方法将返回null,但没有说明数字何时不可用。

您需要通过向清单中添加以下内容来提供application permission来进行此查询:

  

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String number = tm.getLine1Number();

(您不应使用TelephonyManager.getDefault()来获取TelephonyManager,因为这是一个未公开的私有API调用,将来可能会更改。)

  

OR

参考:TelephonyManager give me null

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

在您的情况下,我非常确定MSISDN未被填充。

您应该记住一件事。

getLine1Number()有时会返回空值或原始存储在SIM卡中的电话号码。

相关问题