为了账号安全,请及时绑定邮箱和手机立即绑定

TelephonyManager.getLine1Number()失败了吗?

TelephonyManager.getLine1Number()失败了吗?

繁花如伊 2019-07-25 09:51:35
TelephonyManager.getLine1Number()失败了吗?我想获得Android设备的电话号码。我用这个代码:TelephonyManager tm = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);  String phoneNumber=  tm.getLine1Number();在我的手机上(HTC Wildfire),我无法获得电话号码 - 我得到的只是空字符串。如果我在emulatur上运行代码,通常会显示电话号码。如果我转到设置=>关于电话=>电话身份 - >电话号码,电话号码是“未知”。问题出在哪儿?我的SIM卡有问题吗?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

我们的项目遇到了同样的问题。结论是它取决于SIM卡。

我们发生了什么:

  • 带AT&T SIM卡的Galaxy S:可以读取电话号码,设置显示号码

  • 与欧洲SIM卡相同的Galaxy:无法读取设置中的数字和“未知”(手机功能完备,无法读取数字)

其他论坛也有报道。

最后,我们决定向用户询问电话号码。实际上有点多涉及:if( "SIM card present" && "cannot read the cell number") "ask user"; 。否则,我们将首先窃听不是SIM卡的用户。


查看完整回答
反对 回复 2019-07-25
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

而不是电话号码使用SIM卡序列号,该序列号始终存在且始终是有效值。

 telephonyManager.getSimSerialNumber();

SIM序列号至少在运营商中是唯一的。所以加上

 telephonyManager.getNetworkOperator();

您将拥有一个国家/地区内订阅者的唯一标识符。

这结合了

 telephonyManager.getNetworkCountryIso();

您将拥有订户的全局唯一标识符。

希望这会有所帮助。

干杯。


查看完整回答
反对 回复 2019-07-25
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

SIM卡存储电话号码,您可以编辑它。不能说对于Android,但在WM上,您可以轻松编辑存储在SIM卡上的电话号码。当然,这并不意味着您可以动态更改电话号码。实际上,你可以自由地在那里写任何你喜欢的号码,程序会相信,这是你的真实数字:)


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 2673 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信