在android应用程序中查找用户电话号码的最佳实践?

在android应用程序中查找用户电话号码的最佳实践?,android,mobile,Android,Mobile,我正在开发一个应用程序,我需要找到用户的电话号码。 我创建了Telephony Manager,但是这个类不能保证电话号码总是返回。所以我想知道安卓系统中是否有任何解决方案(可能不是一个直接的解决方案,因为号码没有在sim卡上编码,所以我可以给用户电话号码?您在这里没有太多的可能性,您可以使用: TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); Str

我正在开发一个应用程序,我需要找到用户的电话号码。
我创建了
Telephony Manager
,但是这个类不能保证电话号码总是返回。所以我想知道安卓系统中是否有任何解决方案(可能不是一个直接的解决方案,因为号码没有在sim卡上编码,所以我可以给用户电话号码?

您在这里没有太多的可能性,您可以使用:

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

正如你所说,这并不能保证总是返回一个数字。或者,您可以要求用户手动输入号码。我认为没有其他选择。

只有少数服务提供商通过getLine1Number()方法提供电话号码。相反,您可以使用getSimSerialNumber()方法为每个sim卡获取唯一的号码

要求用户输入电话号码,您可以使用getSimSerialNumber()存储他的simnumber;
然后根据sim卡号码进行身份验证,这将解决您的问题

什么类型的手机?GSM或CDMA?
getLine1Number()
将只返回SIM卡上的电话号码。有时SIM卡上没有号码,有时(在用户更改号码的情况下)会发送错误的号码。获得它的唯一可靠方法是要求用户输入它。这个问题在StackOverflow上被问了大约一百万次。您应该先搜索。@DavidWasser我没有问TelephonyManager。我只是问了一些人在这种情况下使用的标准做法:)不幸的是,标准做法是使用
TelephonyManager.getLine1Number()
,然后抱怨,因为它不起作用:-(