Android - pobierz MEID z JNI
Pracuję w systemie Android, pisząc kod JNI, i szukam sposobu na zapytanie urządzenia Mobile Identifier (MEID).
http://en.wikipedia.org/wiki/Mobile_equipment_identifier
Próbuję napisać kod C lub C ++, który może działać samodzielnie na urządzeniu z systemem Android, więc nie sądzę, żebym mógł korzystać z języka Java (np. Pobrać MEID zTelephonyManager
).
Wyszukiwanie StackOverflow znajduje:Czy istnieje komenda powłoki android lub adb, której mogę użyć, aby uzyskać IMEI / MEID urządzenia?
Okej świetnie,dumpsys iphonesubinfo
mogę uzyskać potrzebne informacje. I to działa!
Nie mogłem znaleźć źródładumpsys
z wyjątkiem jako źródła dla Androida. Pobrałem więc ... mój dysk twardy zapełnił się przed zakończeniem pobierania, ale dostałem kod źródłowydumpsys
. To zaskakująco krótki plik C ++. Wystarczy zapytać AndroidaIBinder
berło.
Moje pytania:
0) Czy jest jakiś sposób, w jaki mogę napisać zapytanie przeciwkoIBinder
używać tylko rzeczy w NDK? Pliki załączników używane przezdumpsys.cpp
nie są w NDK, igrep
w katalogu NDK nie znalezionoIBinder
w dowolnych plikach dołączanych lub przykładowych kodach, więc zgaduję, że jest „nie” (ale chciałbym się mylić).
1) Czy jest jakiś inny dobry sposób na uzyskanie MEID?
Naprawdę myślę, że powinienem po prostu użyćsystem("dumpsys iphonesubinfo > /tmp/myprogname_dumpsys.tmp"
a następnie otwórz plik wynikowy i przeanalizuj go. To powinno działać, ale nie nazwałbym tego eleganckim ... i nie jestem pewien, czydumpsys
jest dostępny na każdym urządzeniu z Androidem lub nie.
EDYCJA: Idea użyciasystem()
biegaćdumpsys
nie zadziała, bodumpsys
wymaganiaandroid.permission.DUMP
i Android nie pozwala już aplikacjom niesystemowym na to uprawnienie.