【问题标题】:Is there a way to retrieve the user's phone number in an mobile app?有没有办法在移动应用程序中检索用户的电话号码?
【发布时间】:2010-08-05 21:47:57
【问题描述】:

有没有办法在移动应用中检索用户的电话号码?我正在寻找构建某种地址簿实用程序来构建电话号码并让他们通过使用他们当前的电话号码拨打数字等。有没有办法检索这些信息?

我已经找到了一些方法来从 sim 卡中检索它在黑莓和 android 中,但显然 sim 卡中的值并不能保证它实际上是它们的号码。

【问题讨论】:

    标签: android blackberry java-me


    【解决方案1】:

    您可以使用the TelephonyManager 来执行此操作:

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

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

    您需要通过将以下内容添加到您的清单中来为您的应用程序提供permission to make this query

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

    (您不应使用TelephonyManager.getDefault()TelephonyManager 用作that is a private undocumented API call and may change in future。)

    【讨论】:

    • 如果开启了飞行模式,或者SIM卡被锁定,该号码可能无法使用。此外,并非所有 SIM 卡都提供此信息,如果您移植了您的号码,则不一定准确。
    【解决方案2】:

    对于黑莓,您可以使用

    Phone.getDevicePhoneNumber(false)
    

    根据 javadoc ,如果当前没有可用的电话号码,此方法可以返回 null

    有一种获取用户手机号码的通用解决方法。

    1. 让用户输入他的手机号码。假设他输入123456789
    2. 在任何端口(非 0)上向此号码发送短信。 例如。在 5001 端口向 123456789 发送短信。
    3. 用于黑莓
      启动后台消息监听线程
      适用于诺基亚、三星等
      在端口 5001 上注册一个动态推送注册表。
    4. 当您收到类似的消息时。 发件人号码 = 收件人号码 = 用户提供的号码。
    5. 用户号码已验证。

    【讨论】:

    • 你能解释一下发送短信到端口上的号码是什么意思吗?你的意思是真的发短信?这对用户来说不花钱吗?
    • 是的,我的意思是实际发送短信,但这只是一次验证费用。
    • 确保在您的 Phone.getDevicePhoneNumber(false) 中包含 ControlledAccessException 的 try/catch,以防您的应用无权查找。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2023-04-08
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多