Obtener mi número de teléfono en android

¿Cómo puedo obtener mi número de teléfono en android

Cuando uso

TelephonyManager tMgr =(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); 

y use:

 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

Return Null

¿por qué?

De la documentación :

Devuelve la cadena de números de teléfono para la línea 1, por ejemplo, el MSISDN para un teléfono GSM. Devuelve null si no está disponible.

Así que has hecho todo bien, pero no hay ningún número de teléfono almacenado.

Si obtiene null , podría mostrar algo para que el usuario ingrese el número de teléfono por su cuenta.

Si la función llamada devuelve null, significa que su número de teléfono no está registrado en su lista de contactos.

Si en lugar del número de teléfono sólo necesita un número único, puede utilizar el número de serie de la tarjeta SIM:

  TelephonyManager telemamanger = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String getSimSerialNumber = telemamanger.getSimSerialNumber(); 

Como contestado aquí

Utilice el siguiente código:

 TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); 

En AndroidManifest.xml, dé el siguiente permiso:

  <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

Pero recuerde, este código no siempre funciona, ya que el número de teléfono celular depende de la tarjeta SIM y el operador de red / portadora de teléfono celular.

También, intente comprobar en Teléfono -> Configuración -> Acerca de -> Identidad del teléfono , Si usted es capaz de ver el número allí, la probabilidad de obtener el número de teléfono del código anterior es mayor. Si no puede ver el número de teléfono en la configuración, entonces no podrá obtener a través de este código!

Solución sugerida:

  1. Obtenga el número de teléfono del usuario como entrada manual del usuario.
  2. Envíe un código al número de móvil del usuario a través de SMS.
  3. Pida al usuario que ingrese el código para confirmar el número de teléfono.
  4. Guarde el número en la preferencia compartida.

Realice los 4 pasos anteriores como actividad única durante el primer lanzamiento de la aplicación. Más adelante, siempre que se necesite un número de teléfono, utilice el valor disponible en la preferencia compartida.

 private String getMyPhoneNumber(){ TelephonyManager mTelephonyMgr; mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); return mTelephonyMgr.getLine1Number(); } private String getMy10DigitPhoneNumber(){ String s = getMyPhoneNumber(); return s.substring(2); } 

Método 1:

 TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); 

Con permiso debajo

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

Método 2:

Hay otra manera que usted será capaz de obtener su número de teléfono, no he probado esto en varios dispositivos, pero encima del código no funciona cada vez.

Intente abajo el código:

 String main_data[] = {"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"}; Object object = 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; String s1 = ((Cursor) (object)).getString(4); } while (true); ((Cursor) (object)).close(); } 

Deberá agregar estos dos permisos.

 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> 

Espero que esto ayude, gracias!

El código de Robi es trabajo para mí, apenas puesto si! Null de modo que si el número de teléfono es nulo, el usuario puede llenar el número de teléfono por él / ella mismo.

 editTextPhoneNumber = (EditText) findViewById(R.id.editTextPhoneNumber); TelephonyManager tMgr; tMgr= (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); if (mPhoneNumber != null){ editTextPhoneNumber.setText(mPhoneNumber); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.