0

我想获取自己手机的手机号码,将此部分添加到我的应用程序中。

我正在搜索这个问题,

模拟器上的代码是正确的,但在设备中显示为空。

public String getMyPhoneNumber()
    {
        return ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
                .getLine1Number();
    }

和 :

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

但它是否返回空值。那么如何获取电话号码详细信息?

4

4 回答 4

1

您使用的方法是 SDK 中唯一可以执行此操作的部分,并且仅适用于将号码存储在 SIM 卡上的设备,只有某些运营商可以这样做。对于所有其他运营商,您将不得不要求用户手动输入电话号码,因为该号码根本不会存储在设备上您可以检索它的任何地方。

于 2013-11-14T11:45:26.933 回答
1

来自:以编程方式获取安卓手机的电话号码

“这个问题没有保证的解决方案,因为电话号码不是物理存储在所有 SIM 卡上,也不是从网络广播到电话。在一些需要物理地址验证的国家尤其如此,只进行号码分配电话号码分配发生在网络上 - 并且可以在不更改 SIM 卡或设备的情况下更改(例如,这是支持移植的方式)。

我知道这很痛苦,但很可能最好的解决方案就是让用户输入他/她的电话号码一次并存储它。”

于 2013-11-14T11:47:39.943 回答
0

您的代码应该没问题,但您需要将SIM 卡插入手机。此外,正如独裁者指出的那样,如果该号码未存储在 sim 卡上,您将得到一个空字符串。

编辑:另外,请检查 Pontus Backlund 提供的链接,那里有一些很好的信息。

于 2013-11-14T11:52:44.533 回答
-1

转到设置 -> 关于设备 -> 状态 -> 我的电话号码 如果我的电话号码未知,你将无法获得手机号码.. 因为某些移动网络不会提供手机号码..

如果我的手机号码有号码,您可以通过以下代码获取手机

TelephonyManager tManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    phoneNumber = tManager.getLine1Number();
于 2013-11-14T11:45:59.873 回答