我可以检索当前的电话号码吗?

时间:2012-06-06 14:24:44

标签: android

我正在为Android(2.1+)编写应用程序,我想使用当前手机的电话号码。很多谷歌搜索给我带来了以下内容:

String number=(TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE).getLine1Number();

与权限一起:READ_PHONE_STATE。

但我的问题是它返回null。在搜索时,我注意到之前已经多次询问过这个问题,并且几乎在所有这些问题中,据说数字并不总是可用。

在测试时我发现在我自己的手机上它给了我null。但是另一个应用程序(例如,WhatsApp)能够识别我的电话号码。

那么我想知道,他们是怎么做到的?

2 个答案:

答案 0 :(得分:3)

您可以查看本教程中的How to Get Own Mobile Number Programmatically

请阅读我在下面的教程中写的所有信息

  

正如我所读到的,到目前为止,有些人在不同方面存在冲突   输出行为。据报道,有些SIM会导致这种情况   返回null的方法。

     

因为手机没有保证解决这个问题的方法   号码不是物理存储在所有SIM卡上,也不是广播的   网络到手机。在一些国家尤其如此   这需要物理地址验证,编号分配   只发生在事后。

答案 1 :(得分:0)

好吧,我想出了另一种方法来检索电话号码(在我的情况下,这绝对是必须的)。

  1. 应用必须连接到服务器。
  2. 服务器为应用程序提供唯一的ID和电话号码。
  3. 该应用会向具有唯一ID的电话号码发送短信。
  4. 服务器(我提到短信网关应该允许您解释短信吗?)会看到发送短信的号码和属于该应用的ID。这存储在数据库中。
  5. 现在,您可以使用标识符检索号码。
  6. 这是基本的想法。