Cómo obtener el número actual de la tarjeta SIM en Android?
Quiero saber el número de teléfono del usuario en Android. He utilizado este código, pero no estoy recibiendo el número.
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String n = tm.getLine1Number();
Permiso:
- ¿Por qué ITelephony.aidl funciona?
- Cómo desconectar la llamada en android 4.1.2 nexus programmatically
- Cómo encontrar el número saliente en el administrador de telefonía
- GetNeighboringCellInfo () devuelve la lista null
- Recuperar el número de teléfono de la llamada entrante en Android
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
¿Es obligatorio guardar el número en la settings --> about phone --> status --> myphone number
android mobile settings --> about phone --> status --> myphone number
¿Alguna idea sobre esto?
- No se puede obtener cadena no vacía de PhoneStateListener :: onCallStateChanged
- ¿Cómo rastrear los mensajes en Android?
- Cómo determinar una llamada realizada es local o STD O ISD
- Llamada de teléfono de Android Handle
- Obtener el número de teléfono programatically en android
- Obtener los detalles del último registro de llamadas después de finalizar la llamada utilizando el receptor de difusión
- Cómo proporcionar vibraciones personalizadas en las llamadas entrantes específicas
- Cómo averiguar qué SIM recibió SMS en Dual SIM Android Device
Creo que el número de serie SIM y el número de sim es único. Usted puede intentar esto para obtener el número de serie del sim y obtener el número de sim y No se olvide de agregar permiso en el archivo de manifiesto.
TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String getSimSerialNumber = telemamanger.getSimSerialNumber(); String getSimNumber = telemamanger.getLine1Number();
Y añada el permiso a continuación en su archivo Androidmanifest.xml
.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Déjeme saber si hay cualquier problema.
Actualización: Esta respuesta ya no está disponible ya que Whatsapp había dejado de exponer el número de teléfono como nombre de cuenta, por favor, no tenga en cuenta esta respuesta.
============================================================================= ================================
Ha sido casi 6 meses y creo que debería actualizar esto con una solución alternativa que usted puede ser que desee considerar.
A partir de hoy, puede confiar en otra aplicación grande 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); }
Comprobar el tipo de cuenta de WhatsApp
if(actype.equals("com.whatsapp")){ String phoneNumber = ac.name; }
Por supuesto que no puede obtenerlo si el usuario no instaló Whatsapp, pero vale la pena intentarlo de todos modos. Y recuerde que siempre debe pedir confirmación al usuario.
Cómo obtener el número de teléfono, IMEI y la ID de la tarjeta SIM
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Para la tarjeta SIM, utilice el comando 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();
IMEI del teléfono, utilice el comando 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"/>
Usted tiene todo derecho, pero el problema es con la función getLine1Number()
.
GetLine1Number (): este método devuelve la cadena de números de teléfono para la línea 1, es decir, el MSISDN para un teléfono GSM. Devuelve null si no está disponible.
Este método funciona sólo para algunos teléfonos celulares, pero no todos los teléfonos.
Por lo tanto, si necesita realizar operaciones de acuerdo con el sim (que no sea la llamada), entonces debe utilizar getSimSerialNumber()
. Siempre es único , válido y siempre existe .
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();
Puede utilizar 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"/>
- Ejemplo androide del presentador de la versión / ejemplos del regulador
- WebView de Android haga clic en abrir en WebView no en un navegador predeterminado