2 votos

¿Cómo comprobar el IMSI/ICCID en el MIUI10?

¿Hay alguna manera de ver los números IMSI y ICCID de mis tarjetas SIM? No encontré ese menú ni en "Acerca del estado" ni en ningún otro sitio.

1voto

Jack Wade Puntos 231

Hay APIs disponibles que aplicaciones (como este ) para leer la información de la SIM. Buscando la solución de CLI (refiérase a este , este y este ), podemos obtener IMSI e ICCID con los siguientes comandos respectivamente (hasta Android 9):

~$ service call iphonesubinfo 7

~$ service call iphonesubinfo 10

* Los códigos dependen del orden de los métodos definidos aquí que pueden diferir en diferentes versiones de Android.
* Para el código de uso del dispositivo de doble SIM 8 y 11 en lugar de eso y añadir i32 2 para obtener la información de la segunda tarjeta SIM.

Pasa la salida por los siguientes tubos para convertir la salida hexadecimal en una bonita cadena:

... | grep -oE '[0-9a-f]{8} ' | while read hex; do echo -ne "\u${hex:4:4}\u${hex:0:4}"; done; echo

Las aplicaciones de emuladores de terminales normalmente no tienen permiso READ_PHONE_STATE (aunque puedes conceder manualmente con root) que es requerido por ambas funciones. Así que los comandos deben ser ejecutados desde adb shell .

Códigos 7 / 8 corresponden a [getSubscribeId](https://developer.android.com/reference/android/telephony/TelephonyManager.html#getSubscriberId()) y 10 / 11 a [getSimSerialNumber](https://developer.android.com/reference/android/telephony/TelephonyManager#getSimSerialNumber()) . Sin embargo, ambos métodos han sido removido para el uso normal de aplicaciones en Android 10. Sólo las aplicaciones de sistema con READ_PRIVILEGED_PHONE_STATE será capaz de obtener esta información. iphonesubinfo el servicio no puede ser abandonado con dumpsys tampoco. Así que Root es la única solución en el Android 10+.

RIL también puede registrar la información relacionada con el operador/SIM a logcat cuando el estado de la SIM cambia. Con el acceso Root es posible leer la base de datos de telefonía (el componente del marco de aplicación que hace interfaz con RIL) y también la propia base de datos RIL (que hace interfaz con el módem). En mi dispositivo Qualcomm RILD almacena información para /data/vendor/radio/qcril.db incluyendo el ICCID y el MCC/MNC.

~# sqlite3 -line /data/user_de/0/com.android.providers.telephony/databases/telephony.db 'select icc_id,card_id,carrier_name,display_name,mcc,mnc from siminfo'

~# sqlite3 /data/vendor/radio/qcril.db 'select ICCID from qcril_manual_prov_table'

A partir de Android 9, el IMSI también se almacena en /data/system/netpolicy.xml para establecer límites de datos móviles para los OMN por separado.

~# grep -o 'subscriberId=[^ ]*' /data/system/netpolicy.xml

RELACIONADO:

0 votos

Gracias, finalmente probé esta respuesta excepcional, ¡funciona!

0 votos

Una pregunta más: Tengo un teléfono de 2 SIM, pero al poner el i32 2 después de 8 u 11 no hace el trabajo, me da los mismos números que sin este apéndice. ¿Es correcto mi comando?

0 votos

service call iphonesubinfo 11 i32 2 | grep -oE '[0-9a-f]{8} ' | while read hex; do echo -ne "\u${hex:4:4}\u${hex:0:4}"; done; echo

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X