0

我正在尝试在 android 中获取所有者的联系人号码,它在模拟器中运行良好,但在手机中无法正常工作。这是代码

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String imei = tm.getDeviceId();
    String phoneNumber = tm.getLine1Number();
4

4 回答 4

3

不保证getLine1Number()总是在所有设备上返回 SIM 卡的号码。因为号码的可用性取决于它在 SIM 卡中的存储。

如果该号码未存储在 SIM 卡中/不可用,则该方法将返回空字符串。

为了获取用户的电话号码,您应该从用户的设备向您的服务器或设备发送一条短信(与 Viber 或其他应用程序相同)。并且为了一个好的做法,请确保在用户确认的情况下完成。

于 2013-03-05T14:08:44.217 回答
1

采用:

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();

并将以下权限添加到您的Androidmanifest.xml文件中。

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

编辑:

尝试使用 getSimSerialNumber()

getLine1Number()MSISDN- 此方法返回第 1 行的电话号码字符串,即GSM电话号码。如果不可用,则返回 null。

此方法仅适用于少数手机,但不适用于所有手机。

因此,如果您需要根据 sim 执行操作(而不是调用),那么您应该使用getSimSerialNumber(). 它始终是唯一的、有效的并且始终存在。

字符串 sSimSerial = mTelephonyMgr.getSimSerialNumber();

于 2013-03-05T14:08:34.963 回答
1

getSimSerialNumber ()是您需要调用以获取 SimSerialNumber 的方法。

代码更新

TelephonyManager tm=(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String phoneNumber = tm.getLine1Number();
String simSerialNumber = tm.getSimSerialNumber();
于 2013-03-05T14:10:00.497 回答
1

1)通过添加检查清单文件,

2) 在您的实现中使用 android.hardware.telephony.gsm。

 It should work fine..
于 2013-03-05T14:13:04.320 回答