Android - obtener MEID de JNI
Estoy trabajando en Android, escribiendo un código JNI, y estoy buscando una manera de consultar el Identificador de equipo móvil (MEID) desde el dispositivo.
http://en.wikipedia.org/wiki/Mobile_equipment_identifier
Estoy tratando de escribir código C o C ++ que pueda ejecutarse solo en un dispositivo Android, así que no creo que pueda usar Java (es decir, obtener MEID deTelephonyManager
).
Una búsqueda de StackOverflow encuentra:¿Hay un comando de shell o adb de Android que pueda usar para obtener el IMEI / MEID de un dispositivo?
Ok genial,dumpsys iphonesubinfo
Puede obtener la información que necesito. ¡Y funciona!
No pude encontrar la fuente paradumpsys
Excepto como parte de la fuente para Android. Así que descargué eso ... mi disco duro se llenó antes de que terminara la descarga, pero obtuve el código fuente paradumpsys
. Es un archivo C ++ sorprendentemente corto. Todo lo que hace es consultar Android.IBinder
interfaz.
Entonces, mis preguntas:
0) ¿Hay alguna forma de escribir una consulta en contra?IBinder
¿Usando solo las cosas en el NDK? Los archivos de inclusión utilizados pordumpsys.cpp
no están en el NDK, ygrep
en el directorio NDK no encontróIBinder
en cualquier archivo de inclusión o muestras de código, así que supongo que es "no" (pero me gustaría estar equivocado).
1) ¿Hay alguna otra buena manera de obtener el MEID?
Estoy pensando seriamente que debería usarsystem("dumpsys iphonesubinfo > /tmp/myprogname_dumpsys.tmp"
y luego abrir el archivo resultante y analizarlo. Eso debería funcionar, pero difícilmente lo llamaría elegante ... y no estoy seguro sidumpsys
Está disponible en todos los dispositivos Android o no.
EDITAR: La idea de usarsystem()
correrdumpsys
no funcionará, porquedumpsys
necesariamenteandroid.permission.DUMP
y Android ya no permite que las aplicaciones que no son del sistema tengan ese permiso.