Android - obtenha o MEID do JNI
Estou trabalhando no Android, escrevendo algum código JNI, e estou procurando uma maneira de consultar o MEID (Mobile Equipment Identifier) do dispositivo.
http://en.wikipedia.org/wiki/Mobile_equipment_identifier
Eu estou tentando escrever código C ou C ++ que pode ser executado sozinho em um dispositivo Android, então eu não acho que posso usar Java (ou seja, obter MEID deTelephonyManager
).
Uma pesquisa do StackOverflow encontra:Existe um shell android ou comando adb que eu poderia usar para obter o IMEI / MEID de um dispositivo?
Certo, ótimo,dumpsys iphonesubinfo
pode obter as informações que preciso. E isso funciona!
Eu não consegui encontrar a fonte paradumpsys
exceto como parte da fonte para o Android. Então eu baixei isso ... meu disco rígido cheio antes do download terminar, mas eu consegui o código fonte paradumpsys
. É um arquivo C ++ surpreendentemente curto. Tudo o que faz é consultar o AndroidIBinder
interface.
Então, minhas perguntas:
0) Existe alguma maneira eu posso escrever uma consulta contraIBinder
usando apenas as coisas no NDK? Os arquivos de inclusão usados pordumpsys.cpp
não estão no NDK, egrep
no diretório NDK não encontrouIBinder
em qualquer arquivo de inclusão ou amostras de código, então meu palpite é "não" (mas eu gostaria de estar errado).
1) Existe alguma outra boa maneira de obter o MEID?
Eu estou pensando seriamente que eu deveria apenas usarsystem("dumpsys iphonesubinfo > /tmp/myprogname_dumpsys.tmp"
e, em seguida, abra o arquivo resultante e analise-o. Isso deve funcionar, mas eu dificilmente chamaria de elegante ... e eu não tenho certeza sedumpsys
está disponível em todos os dispositivos Android ou não.
EDIT: A idéia de usarsystem()
para correrdumpsys
não vai funcionar, porquedumpsys
necessidadesandroid.permission.DUMP
e o Android não permite mais que aplicativos que não sejam do sistema tenham essa permissão.