我正在尝试在 android 中获取所有者的联系人号码,它在模拟器中运行良好,但在手机中无法正常工作。这是代码
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String phoneNumber = tm.getLine1Number();
我正在尝试在 android 中获取所有者的联系人号码,它在模拟器中运行良好,但在手机中无法正常工作。这是代码
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String phoneNumber = tm.getLine1Number();
不保证getLine1Number()
总是在所有设备上返回 SIM 卡的号码。因为号码的可用性取决于它在 SIM 卡中的存储。
如果该号码未存储在 SIM 卡中/不可用,则该方法将返回空字符串。
为了获取用户的电话号码,您应该从用户的设备向您的服务器或设备发送一条短信(与 Viber 或其他应用程序相同)。并且为了一个好的做法,请确保在用户确认的情况下完成。
采用:
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();
getSimSerialNumber ()是您需要调用以获取 SimSerialNumber 的方法。
代码更新:
TelephonyManager tm=(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String phoneNumber = tm.getLine1Number();
String simSerialNumber = tm.getSimSerialNumber();
1)通过添加检查清单文件,
2) 在您的实现中使用 android.hardware.telephony.gsm。
It should work fine..