telefono - ¿Cómo obtener el número actual de la tarjeta SIM en Android?
importar contactos significado (6)
Quiero saber el número de móvil del usuario en Android. Usé este código pero no obtengo el número.
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String n = tm.getLine1Number();
Permiso:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
¿Es obligatorio guardar el número en la settings --> about phone --> status --> myphone number
Android móvil? settings --> about phone --> status --> myphone number
Alguna idea sobre esto?
Creo que el número de serie y el número sim son únicos. Puede probar esto para obtener el número de serie de la SIM y obtener el número SIM y No olvide agregar el permiso en el archivo de manifiesto.
TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();
Y agregue el permiso debajo en su archivo Androidmanifest.xml
.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Avísame si hay algún problema.
Obtener el número de teléfono, el IMEI y la ID de la tarjeta SIM
TelephonyManager tm = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
Para la tarjeta SIM, use getSimSerialNumber ()
//---get the SIM card ID---
String simID = tm.getSimSerialNumber();
if (simID != null)
Toast.makeText(this, "SIM card ID: " + simID,
Toast.LENGTH_LONG).show();
Número de teléfono de su teléfono, use el getLine1Number () (algunos dispositivos no devuelven el número de teléfono)
//---get the phone number---
String telNumber = tm.getLine1Number();
if (telNumber != null)
Toast.makeText(this, "Phone number: " + telNumber,
Toast.LENGTH_LONG).show();
Número de IMEI del teléfono, use getDeviceId ()
//---get the IMEI number---
String IMEI = tm.getDeviceId();
if (IMEI != null)
Toast.makeText(this, "IMEI number: " + IMEI,
Toast.LENGTH_LONG).show();
Permisos necesarios
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Puede usar TelephonyManager para hacer esto:
TelephonyManager t = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String number = t.getLine1Number();
Has usado
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Requiere el permiso READ_PHONE_STATE
.
TelephonyManager telMgr = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
String deviceID = telMgr.getDeviceId();
String simSerialNumber = telMgr.getSimSerialNumber();
String simLineNumber = telMgr.getLine1Number();
Tienes todo bien, pero el problema es con la función getLine1Number()
.
getLine1Number () - este método devuelve la cadena del número de teléfono para la línea 1, es decir, el MSISDN para un teléfono GSM. Devuelve nulo si no está disponible.
este método funciona solo para pocos teléfonos celulares pero no para todos los teléfonos.
Por lo tanto, si necesita realizar operaciones de acuerdo con el simulador (que no sea la llamada), entonces debe usar getSimSerialNumber()
. Siempre es único , válido y siempre existe .
Actualización: esta respuesta ya no está disponible ya que Whatsapp dejó de exponer el número de teléfono como nombre de cuenta, ignore amablemente esta respuesta.
=============================================== ============================
Han pasado casi 6 meses y creo que debería actualizar esto con una solución alternativa que tal vez desee considerar.
A partir de hoy, puede confiar en otra gran aplicación de Whatsapp, utilizando AccountManager. Millones de dispositivos tienen esta aplicación instalada y si no puede obtener el número de teléfono a través de TelephonyManager, puede darle una oportunidad.
Permiso:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Código:
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();
ArrayList<String> googleAccounts = new ArrayList<String>();
for (Account ac : accounts) {
String acname = ac.name;
String actype = ac.type;
// Take your time to look at all available accounts
System.out.println("Accounts : " + acname + ", " + actype);
}
Verifique la cuenta de actype para whatsapp
if(actype.equals("com.whatsapp")){
String phoneNumber = ac.name;
}
Por supuesto, puede que no lo consigas si el usuario no instaló Whatsapp, pero vale la pena intentarlo de todos modos. Y recuerde que siempre debe pedir confirmación al usuario.