getLine1Number()返回空白,而不是null

Pra*_*ani 10 android telephonymanager

我想获得手机号码设备.我使用了以下代码参考Alex Volovoy的 This Link

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

Log.d("msg", "Phone : "+mPhoneNumber);
Run Code Online (Sandbox Code Playgroud)

Logcat中的OUTPUT:

没有Simcard手机返回:

02-01 17:22:45.472: D/msg(29102): Phone : null
Run Code Online (Sandbox Code Playgroud)

使用Simcard:

02-01 17:22:45.472: D/msg(29102): Phone : 
Run Code Online (Sandbox Code Playgroud)

我也采取了许可,<uses-permission android:name="android.permission.READ_PHONE_STATE"/>AndroidManifest.xml

所以我该怎么做?有错误吗?

Ank*_*kit 16

要从设备获取电话号码,首先您必须在设备上设置自己的电话号码,只需:

设置 - >关于电话 - >状态 - >我的电话号码

每个运营商都没有SIM卡上的电话号码,比如印度的Sim在任何内存中都没有电话号码,所以我们无法通过这些连接获得电话号码.但是,一些国家和运营商已经在SIM卡上存储了电话号码,我们可以获得这些号码.为了使其适用于所有设备,我们可以采用两种策略:

为了避免这个问题,我们可以捕获错误并相应地工作.喜欢:

TelephonyManager tMgr = (TelephonyManager) 
                 ShowMyLocation.this.getSystemService(Context.TELEPHONY_SERVICE);

String MyPhoneNumber = "0000000000";

try 
{
    MyPhoneNumber =tMgr.getLine1Number();
}
catch(NullPointerException ex)
{
}

if(MyPhoneNumber.equals("")){
    MyPhoneNumber = tMgr.getSubscriberId();
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你,但我想要电话号码。 (2认同)