【问题标题】:get phone number from sim card with telephonymanager使用电话管理器从 SIM 卡中获取电话号码
【发布时间】:2019-02-02 03:21:20
【问题描述】:

我想知道如何从 sim 卡而不是 sim 序列号获取实际电话号码。我也尝试过 (manager.getLine1Number),但它给了我 null。

【问题讨论】:

    标签: android


    【解决方案1】:

    参考:How to get the mobile number of current sim card in real device?

    TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
    String number = tm.getLine1Number();
    

    The documentation for getLine1Number() 表示如果号码“不可用”,此方法将返回 null,但没有说明号码何时可能不可用。

    您需要提供您的application permission,通过将以下内容添加到您的清单中来进行此查询:

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

    (您不应使用 TelephonyManager.getDefault() 来获取 TelephonyManager,因为这是一个未记录的私有 API 调用,并且将来可能会更改。)

    参考:TelephonyManager give me null

    > getLine1Number(); returns whatever is stored on the SIM card's MSISDN,
    > which isn't filled by some operators.
    

    在你的情况下,我很确定 MSISDN 是空缺的。

    你应该记住一件事。

    getLine1Number() 有时会返回空值或原来存储在 SIM 卡中的电话号码。

    【讨论】:

    • 感谢您的回答,但我已经使用了所有东西并且还添加了您提到的权限,但它没有用。因此,如果有任何其他方法可以从 sim 卡中找到 sim 卡号(实际电话号码),我将不胜感激。
    • 如果在模拟器上测试没有手机号码@jabirkhan
    • 我明白你的意思,但我想知道是否有任何方法可以从 sim 卡中获取电话号码?@Ashvin solanki
    • 我已经在最后一点提到并参考 Que @jabirkhan
    【解决方案2】:

    空引用可能表示无法访问电话号码。

    文档:

    请注意,对某些电话信息的访问是受权限保护的。您的应用程序无法访问受保护的信息,除非它具有在其清单文件中声明的适当权限。在适用权限的情况下,它们会在您访问受保护信息的方法中注明。

    所需权限:

    READ_PHONE_STATE、READ_SMS、READ_PHONE_NUMBERS link to method doc

    我还发现另一个问题面临着与您命名的方法“不起作用”的非常相似的问题。那里也有人提到了一个重复的问题。这也可能会有所帮助: Link

    如果那里的代码对您没有帮助,我建议您检查方法的确切文档以查找详细信息,以及返回空引用的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多