2012-06-06 39 views
-1

我正在为Android(2.1+)编写应用程序,我想使用当前手机的电话号码。大量的谷歌搜索给我带来了以下:我可以检索当前的电话号码吗?

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

随着权限:READ_PHONE_STATE。

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

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

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

回答

0

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

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

这就是基本的想法。

3

您可以检查此教程How to Get Own Mobile Number Programmatically

请阅读我写了下面的教程有

我读过的信息,至今有些人对输出的不同 行为冲突。有报告称某些SIM导致此 方法返回空值。

因为没有保证的解决方案来解决这个问题,因为手机 号码没有物理存储在所有SIM卡上,或从 广播到手机。在一些需要物理地址验证的国家 中尤其如此,其中编号分配 仅在之后发生。

+1

我同意w/this answer,为什么不在用户找不到时询问用户号码? –

相关问题