/ / ¿Cómo obtener el número de tarjeta SIM de Android? - Android

¿Cómo obtener el número de tarjeta SIM de Android? - android

Quiero escribir una aplicación simple en Android para obtener el número de la tarjeta SIM, uso este código:

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

escriba el código en Fragmento en este bloque:

 public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

En esta línea:

mAppContext.getSystemService(Context.TELEPHONY_SERVICE);

Me sale un error esta parte: mAppContext.getSystemService . ¿Cómo puedo resolver ese problema? Gracias por prestarme atención a mi problema.

Respuestas

2 para la respuesta № 1

obtener contexto en Fragment mediante el uso getActivity()

TelephonyManager tMgr = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);

0 para la respuesta № 2

El método que está utilizando es la única parte de laEl SDK para hacer esto, y solo funciona en dispositivos donde el número está almacenado en la tarjeta SIM, que solo algunos proveedores lo hacen. Para todos los demás operadores, tendrá que pedirle al usuario que ingrese el número de teléfono manualmente, ya que el número simplemente no se almacena en ningún lugar del dispositivo desde donde puede recuperarlo.


0 para la respuesta № 3

te da todos los contactos:

Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,
null);
Cursor phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
Phone_CONTACT_ID + " = ?", new String[] { contact_id },
null);
String phoneNumber = phoneCursor.getString(phoneCursor
.getColumnIndex(NUMBER));

Crea bucle para cursor y obtén todos los contactos.


0 para la respuesta № 4

¿Ha proporcionado el permiso READ_PHONE_STATE en el manifiesto?


0 para la respuesta № 5

Verifique AndroidManifest.xml si ha declarado o no el permiso siguiente.

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

Si no es así, añádelo después de que cambie su mAppContext a getActivity() para ejecutar su código.


0 para la respuesta № 6

Por algunas razones, esta API obtendrá una vacía si el dispositivo no tiene soporte para almacenar el número de SIM. Si es así, debemos pedirle al usuario que ingrese el número manualmente.

TelephonyManager telephonyManager = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
String phone = telephonyManager.getLine1Number();
if (phone != null && phone.isEmpty()) {
// TODO: ask the user to input his/her telephone number
}