2

嗨,我正在编写一个 Android 应用程序,它只允许注册的手机用户使用。如何获取android应用程序所在的电话号码。谢谢

4

5 回答 5

1

您可以使用以下代码获取手机号码

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String mMobileNo =  telephonyManager.getLine1Number();

在 AndroidManifest.xml 中添加以下权限

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

问题:它可以为空

根据文档.getLine1Number()“返回第 1 行的电话号码字符串,例如,GSM电话的MSISDN。如果不可用,则返回 null。”

显然.getLine1Number()是从 SIM 卡中读取此信息,因此如果运营商设置了 MSISDN 字段,它将返回其值,如果他们没有设置此字段,则返回 null。

在您的情况下,您的 SIM 卡可能没有由运营商填充此字段。

欲了解更多信息,您可以访问此

解决方案

这不是验证手机号码的正确方法,你可以像whatsapp那样做,你可以从这个链接找到它。

于 2013-06-06T05:30:51.587 回答
0

TelephonyManager是一种方法:

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

请记住,它需要:READ_PHONE_STATE许可。

于 2013-06-06T05:31:25.680 回答
0

调用getLine1Number()将为TelephonyManager您完成。

TelephonyManager mTelephonyManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
userPhoneNumber = mTelephonyManager.getLine1Number();

文档摘录:

公共字符串 getLine1Number ()

在 API 级别 1 中添加 返回第 1 行的电话号码字符串,例如 GSM 电话的 MSISDN。如果不可用,则返回 null。

需要权限:READ_PHONE_STATE

于 2013-06-06T05:31:49.300 回答
0

我不会对电话号码使用上述任何技术,因为这些 api 在所有电话中都不一致。Spice、Micromax 和许多三星手机不返回电话号码。使用api很好地猜测用户的电话号码,但不要忘记提示让用户更正。

HTC 手机在这方面要好得多,该 API 在所有 HTC 手机中都运行良好。

于 2013-06-06T05:37:27.713 回答
0
TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
  mPhoneNumber = tMgr.getLine1Number();

经许可:READ_PHONE_STATE

于 2013-06-06T05:32:18.640 回答