android - getLine1Number() 获取设备电话号码的问题

标签 android telephonymanager

<分区>

我读到在下面的代码中使用 getLine1Number() 可能会出现诸如

之类的问题
  1. 返回空值
  2. 返回一个无效的字符串
  3. 导致空指针异常。

还有其他问题吗?

我不确定的最大问题是,它是否返回无效号码(就像手机之前的号码一样)?这是最重要的问题,因为如果它返回一个数字,我可以依赖该数字吗?

代码:

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

所需权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

最佳答案

Yes Null 当 SIM 存在但我们仍然无法读取号码时返回。一些 SIM 卡不允许这样做,而另一些 SIM 卡中没有号码。

引用 TelephonyManager.getLine1Number() failing , Android issue about TelephoneManagerThe impossibleness of getting your PhoneNumber in Android and AlertDialogs on Futures blog , 似乎 SIM 中的号码不是操作所必需的,实际上是由网络分配的。如果您阅读了问题的链接,在评论中人们建议用户可以从 Android 界面更改 SIM 卡中的号码。但是,这可能只适用于旧版本。虽然我试过更改 SIM 中的号码(Android 4.0 版本之后),但它不允许我这样做。即使有人改了,真实的号码也是网络分配的。但是,由于您是从 SIM 存储中提取数据,所以我认为它不是 100% 安全的。

这是我的 2 美分。希望能帮助到你。

关于android - getLine1Number() 获取设备电话号码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011004/

相关文章:

android - 我需要类似 ACCESS_WIFI_STATE 的东西,但这样我就可以通过 3g 处理数据流量

android - onViewRecycled 需要调用 super 吗?

java - 当 EditText A 有字母时显示 EditText B

android - TelephonyManager 实例化

Android - 使用通过请求发送的预定输入浏览 USSD 菜单

java - 电话号码状态比较不正确?

android - 当从 Android Studio 签名生成 .apk 时,zipalign 会自动执行吗?

android - 如何将 aes 256 加密数据发送到 Web 服务器?

android - 滚动时 LazyColumn 不保持项目的状态

android - 如何检查 Android 设备上的电话网络