2011-09-02 13 views
5

Mam aplikacji przy użyciu NativeActivity. Chcę wywołać w Javie, aby wykonać coś, co wymaga kontekstu (np. Uzyskanie dostępu do usługi TelephonyManager w celu wysłania zapytania do IMEI).Uzyskiwanie kontekstu z NativeActivity

Jak uzyskać prawidłowy kontekst dla mojej działalności?

Struktura ANativeActivity zawiera wiele użytecznych danych dla mojej aplikacji, takich jak JavaVM i środowisko JNI itp. Zawiera także jobject wskazujący na obiekt klasy NativeActivity. To, czego nie zawiera, to zadanie wskazujące na instancję NativeActivity o numerze . Nie widzę też niczego użytecznego w struct android_app.

Musi być to możliwe; jakieś pomysły jak?

+0

Możliwe podwójne pytanie. Sprawdź to http://stackoverflow.com/questions/4449864/access-android-context-in-ndk-application – weakwire

+0

Nie, to pytanie odnosi się do NDK w starym stylu (gdzie było to ściśle wywoływane z Javy), podczas gdy Używam NativeActivity NDK w nowym stylu (gdzie główna aplikacja jest napisana natywnym kodem i wywołuje Java). –

Odpowiedz

4

Mimo swojej nazwy element clazz z ANativeActivity struct jest rzeczywiście skierowany do instancji android.app.NativeActivity.
Sprawdź kod this post, aby uzyskać przykład użycia wywołania JNI z kodu Natywna aktywność do kodu Java.

+0

Dokumenty w nagłówku mówią, że to także klasa - ale tak, teraz próbuję go użyć, to oczywiście raczej instancja niż klasa. Dzięki! –

+0

Tak, to prawda. Dokument jest mylący, ponieważ opisuje pole clazz jako "Klasa NativeActivity Java". Jedyną słabą wskazówką jest 'clazz' type:' jobject' zamiast 'jclass'. Niemniej jednak warto opublikować prośbę o dodanie błędu/funkcji do udoskonalania dokumentów. – Idolon

Powiązane problemy