如何获取当前的SIM号码

时间:2013-03-05 14:06:37

标签: android

我正在尝试在Android中获取所有者contactnumber它在模拟器中运行良好但在手机中没有工作。这是代码

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

4 个答案:

答案 0 :(得分:3)

无法保证getLine1Number()始终会在所有设备上返回SIM卡的号码。因为数量的可用性取决于其在SIM卡中的存储。

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

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

答案 1 :(得分: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() - 此方法返回第1行的电话号码字符串,即MSISDN电话的GSM。如果不可用则返回null。

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

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

String sSimSerial = mTelephonyMgr.getSimSerialNumber();

答案 2 :(得分:1)

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

代码更新

TelephonyManager tm=(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String phoneNumber = tm.getLine1Number();
String simSerialNumber = tm.getSimSerialNumber();

答案 3 :(得分:1)

1)通过添加

检查清单文件

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

 It should work fine..
相关问题