android - 读取设备电话号码抛出 NULLPointerException

标签 android nullpointerexception phone-number

我正在尝试使用以下代码读取设备的电话号码。当电话号码不可用时,我会读取订阅者 ID。它适用于某些手机,并在某些设备中抛出 NULL 指针异常。设备日志显示我在以下行中收到 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 卡在任何内存中都没有电话号码,因此我们无法从这些连接中获取电话号码。但是,一些国家和运营商在 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. 或者我们可以有一个短信网关,每当我们需要电话号码时,我们可以向网关发送一条短信,然后部署一个网络服务来返回号码,短信网关接收消息,但是这解决方案成本高昂。

关于android - 读取设备电话号码抛出 NULLPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534534/

相关文章:

php - 如何在 mysql 中对长字符串值使用 like

android - 忽略构建中的 .orig 文件

Android - Gradle 同步失败 : org/jetbrains/kotlin/kapt/idea/KaptGradleModelorg/jetbrains/kotlin/kapt/idea/KaptGradleModel

java - Android - 设置 ImageAdapter NullPointerException

android - 使用联系人选择器时从具有多个号码的用户中选择一个号码

php - 最好将电话存储在三个字段中还是作为一个字段?

java - TessBaseAPI 无法解析符号 tess-two OCR Android

android - 可以澄清一下 <include> 和 <merge> 的用法吗

java - 抛出空指针异常

java - 调用方法时处理空指针异常