在android中获取我的电话号码

moh*_*bah 41 android

如何在Android中获取我的电话号码?我用的时候:

TelephonyManager tMgr =(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
Run Code Online (Sandbox Code Playgroud)

并使用:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)

它返回null,为什么?

key*_*fer 23

文档:

返回第1行的电话号码字符串,例如GSM电话的MSISDN.如果不可用则返回null.

所以你已经做好了一切,但没有存储电话号码.

如果你得到null,你可以显示一些东西让用户自己输入电话号码.


Ram*_*Ram 11

如果您调用的函数返回null,则表示您的电话号码未在联系人列表中注册.

如果您只需要一个唯一的号码而不是电话号码,您可以使用SIM卡的序列号:

    TelephonyManager telemamanger = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    String getSimSerialNumber = telemamanger.getSimSerialNumber();  
Run Code Online (Sandbox Code Playgroud)

  • 那你怎么办?有什么方法可以使用SIM卡序列号获取电话号码? (2认同)

Nis*_*hia 9

作为回答这里

使用以下代码:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中,授予以下权限:

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
Run Code Online (Sandbox Code Playgroud)

但请记住,此代码并不总是有效,因为手机号码取决于SIM卡和网络运营商/手机运营商.

此外,尝试检查电话 - >设置 - >关于 - >电话身份,如果您能够在那里查看号码,从上面的代码获取电话号码的概率更高.如果您无法在设置中查看电话号码,那么您将无法通过此代码获取!

建议的解决方法:

  1. 将用户的电话号码作为用户的手动输入.
  2. 通过短信将代码发送到用户的手机号码.
  3. 要求用户输入代码以确认电话号码.
  4. 将号码保存在共享首选项中.

在应用程序首次启动时,将上述4个步骤作为一次性活动.稍后,只要需要电话号码,请使用共享首选项中的可用值.