【问题标题】:Retrieve phone Number in android在android中检索电话号码
【发布时间】:2012-09-05 09:32:32
【问题描述】:

这是下面的代码来检索电话号码 wwa 能够在三星 4.0.4 上得到它,但在 htc one v mobile 上得到以下错误..任何线索?

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TextView textDeviceID = (TextView)findViewById(R.id.deviceid);


TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

textDeviceID.setText(getMy10DigitPhoneNumber(telephonyManager));


}
private String getMyPhoneNumber(){
 TelephonyManager mTelephonyMgr;
 mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
 return mTelephonyMgr.getLine1Number();
 }

 private String getMy10DigitPhoneNumber(TelephonyManager telephonyManager){
 String s = getMyPhoneNumber();
 return s.substring(0);
 }
}

【问题讨论】:

  • 请编辑您的帖子并包含错误消息。
  • 没有可靠的方法来获取电话号码。 getLine1Number() 依赖于存储在 SIM 卡上的电话号码。有些运营商会这样做,有些则不会。此外,如果用户更改了他的电话号码,您使用getLine1Number() 从 SIM 卡中获取的电话号码将是错误的。 StackOverflow 上有很多这样的帖子。例如见stackoverflow.com/questions/5134398/…
  • 谢谢大卫..但至少我应该返回 null 正确但我在 logcat 中收到错误消息

标签: android


【解决方案1】:
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String mblNumber = mTelephonyMgr.getLine1Number();

注意:不要忘记在 AndroidManifest.xml 文件中添加 READ_PHONE_STATE 权限:

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

【讨论】:

    【解决方案2】:

    根据文档.getLine1Number() "返回第 1 行的电话号码字符串,例如,GSM 电话的 MSISDN。如果不可用,则返回 null。 "

    显然.getLine1Number() 从 SIM 卡中读取此信息,因此如果运营商设置了 MSISDN 字段,它将返回其值,如果他们没有设置此字段,则返回 null。

    在您的情况下,您的 SIM 卡可能没有由运营商填写此字段。

    【讨论】:

    • @sayyam-有没有办法找到 MSISDN 号码,无论它是否设置?...并且它不返回 null..给出错误...
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多