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.

Odmowa zezwolenia Dumpsysa w java

questionAnswers(2)

yourAnswerToTheQuestion