我想读使用下面的代码设备的电话号码。 当电话号码不可用我读了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();
电话号码不可用的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();
或者,我们可以有一个短信网关,每当我们需要的电话号码,我们可以发送短信到网关,然后部署web服务返回的号码,短信网关收到消息,但是这种解决方案是昂贵的。
为了从设备获取电话号码,首先你要在设备上设置自己的电话号码,只要经过:
设置 - >关于手机 - >状态 - >我的电话号码
当调用此代码:
MyPhoneNumber = tMgr.getLine1Number();
它储存的号码真的返回。
TelephonyManager TM =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
字符串数= tm.getLine1Number();
有时电话号码没有在手机的设置中设置。 在这些情况下, getLine1Number()
将返回null。 你需要弄清楚无论你跟踪追踪的另一种方式。
这是人们碰到很多的问题。 我没有在Android程序不多,但我看过这个被问了很多。 请确保您使用搜索来检查,如果你问的问题已经被问过。
添加清单READPHONESTATE权限
愿你使用
if(MyPhoneNumber.length<0)
MyPhoneNumber = tMgr.getSubscriberId();