获取android应用程序所在的电话号码
嗨,我正在写一个Android应用程序,它只允许注册手机用户使用。如何获取android应用程序所在的电话号码。谢谢您可以使用以下代码获取手机号码获取android应用程序所在的电话号码,android,Android,嗨,我正在写一个Android应用程序,它只允许注册手机用户使用。如何获取android应用程序所在的电话号码。谢谢您可以使用以下代码获取手机号码 TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String mMobileNo = telephonyManager.getLine1Number(); 在AndroidManifest.xml中
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卡可能没有由运营商填充的此字段
有关更多信息,您可以
解决方案
这不是验证手机号码的正确方法,您可以像App一样进行验证,您可以从中找到它。
TelephonyManager
是一种方法:
TelephonyManager tm=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
number = tm.getLine1Number();
请记住,这需要:读取电话状态
权限。在电话管理器
上呼叫即可
TelephonyManager mTelephonyManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
userPhoneNumber = mTelephonyManager.getLine1Number();
摘自:
公共字符串getLine1Number()
API级别1中添加的返回第1行的电话号码字符串,例如
例如,GSM电话的MSISDN。如果不可用,则返回null
需要权限:读取\u电话\u状态
经允许:读取电话状态我不会对电话号码使用上述任何技术,因为这些api在所有电话中都不一致。Spice、Micromax和许多三星手机都不返回电话号码。使用api可以很好地猜测用户的电话号码,但别忘了提示用户进行更正
HTC手机在这方面要好得多,API在所有HTC手机上都能正常工作。大约两个月前,我也想解决这个问题,并认为只要像whatsapp那样做就行了。但我突然想到,我必须以自己的方式编写代码,以确认我的android应用程序中使用的用户手机号码。所以我把这个问题贴在So上,但并没有得到更好的答案,过了一段时间,我写了自己的方式代码来获取用户的手机号码。这是我问题的链接,请检查我的答案。谢谢你,曼尼什。这真的很有帮助。您应该知道它可能返回null;
TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = tMgr.getLine1Number();