我正在尝试在Android中获取所有者contactnumber它在模拟器中运行良好但在手机中没有工作。这是代码
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String phoneNumber = tm.getLine1Number();
答案 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..