GetLine1Number () Devuelve blanco, no nulo

Quiero obtener el número de dispositivo móvil. He utilizado la siguiente referencia de código de Alex Volovoy's This Link

TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); Log.d("msg", "Phone : "+mPhoneNumber); 

SALIDA en Logcat:

Sin devoluciones de los teléfonos de Simcard:

 02-01 17:22:45.472: D/msg(29102): Phone : null 

Con Simcard:

 02-01 17:22:45.472: D/msg(29102): Phone : 

También he tomado permiso en <uses-permission android:name="android.permission.READ_PHONE_STATE"/> en AndroidManifest.xml

¿Entonces qué debo hacer? ¿Hay algún error?

Para obtener el número de teléfono del dispositivo, primero tiene que establecer su propio número de teléfono en el dispositivo, sólo a través de:

Configuración -> Acerca del teléfono -> Estado -> Mi número de teléfono

Los números de teléfono no están disponibles en la tarjeta SIM para cada operador, como en la India Sim no tienen números de teléfono en cualquier memoria, por lo que no podemos obtener el número de teléfono de esta conexión. Sin embargo, algunos países y operadores han almacenado números de teléfono en SIM, y podemos obtenerlos. Para que esto funcione para todos los dispositivos podemos emplear dos estrategias:

Para evitar este problema, podemos detectar el error y trabajar en consecuencia. Me gusta:

 TelephonyManager tMgr = (TelephonyManager) ShowMyLocation.this.getSystemService(Context.TELEPHONY_SERVICE); String MyPhoneNumber = "0000000000"; try { MyPhoneNumber =tMgr.getLine1Number(); } catch(NullPointerException ex) { } if(MyPhoneNumber.equals("")){ MyPhoneNumber = tMgr.getSubscriberId(); } 

Tengo otra solución para obtener un número de teléfono cuando el administrador de telefonía regresa en blanco. Espero que te ayude.

Aquí está mi código de ejemplo:

 public static final String main_data[] = { "data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype" }; object object = (TelephonyManager) context.getSystemService("phone"); if (!TextUtils.isEmpty(((TelephonyManager) (object)).getLine1Number())) { } object = context.getContentResolver().query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"), main_data, "mimetype=?", new String[]{ "vnd.android.cursor.item/phone_v2" }, "is_primary DESC"); if (object != null) { do { if (!((Cursor) (object)).moveToNext()) { break; } if (s.equals("vnd.android.cursor.item/phone_v2")) { String s1 = ((Cursor) (object)).getString(4); boolean flag1; if (((Cursor) (object)).getInt(5) > 0) { flag1 = true; } else { flag1 = false; } Toast.makeText(SampleActivity.this, "Phone:-" + s1, Toast.LENGTH_LONG).show(); } } while (true); ((Cursor) (object)).close(); } 

También no olvide agregar estos dos permisos:

 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> 
  • Obtener los detalles del último registro de llamadas después de finalizar la llamada utilizando el receptor de difusión
  • Detectar llamada en espera
  • Cómo obtener la fuerza de la señal de android
  • Cómo encontrar el número saliente en el administrador de telefonía
  • Obtener código de país
  • Cómo determinar una llamada realizada es local o STD O ISD
  • El identificador de dispositivo Android único después de la advertencia de MarshMallow "no se recomiendan los identificadores de dispositivo"?
  • ¿Por qué getNetworkOperator no es confiable para CDMA?
  • ¿Por qué ITelephony.aidl funciona?
  • Cómo averiguar qué SIM recibió SMS en Dual SIM Android Device
  • Llamada de teléfono de Android Handle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.