阅读设备的电话号码引发NullPointerException异常(Reading device p

2019-06-26 08:44发布

我想读使用下面的代码设备的电话号码。 当电话号码不可用我读了subcriber ID。 它工作在一些手机和一些设备抛出空指针异常。 该设备日志显示我收到NULL指针异常下面一行

if(MyPhoneNumber.equals(""))

请让我知道如何使它工作中的所有设备。

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

String MyPhoneNumber = tMgr.getLine1Number(); 


if(MyPhoneNumber.equals(""))
             MyPhoneNumber = tMgr.getSubscriberId();

Answer 1:

电话号码不可用的SIM卡为每个运营商,像印度辛不以任何存储有电话号码的,所以我们不能从这些方面得到的电话号码。 然而,一些国家和运营商的SIM卡存储的电话号码,我们可以得到这些。 为了使这个为我们可以采用两种策略的所有设备的工作:

  1. 为了避免空指针异常,我们可以捕获错误,并相应地工作。 喜欢:

     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(); 
  2. 或者,我们可以有一个短信网关,每当我们需要的电话号码,我们可以发送短信到网关,然后部署web服务返回的号码,短信网关收到消息,但是这种解决方案是昂贵的。



Answer 2:

为了从设备获取电话号码,首先你要在设备上设置自己的电话号码,只要经过:

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

当调用此代码:

MyPhoneNumber = tMgr.getLine1Number();

它储存的号码真的返回。



Answer 3:

TelephonyManager TM =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);

字符串数= tm.getLine1Number();



Answer 4:

有时电话号码没有在手机的设置中设置。 在这些情况下, getLine1Number()将返回null。 你需要弄清楚无论你跟踪追踪的另一种方式。

这是人们碰到很多的问题。 我没有在Android程序不多,但我看过这个被问了很多。 请确保您使用搜索来检查,如果你问的问题已经被问过。



Answer 5:

添加清单READPHONESTATE权限

愿你使用

if(MyPhoneNumber.length<0)
             MyPhoneNumber = tMgr.getSubscriberId();


文章来源: Reading device phone number throws NULLPointerException