2011-09-02 10 views
5

Ho un'applicazione che utilizza NativeActivity. Voglio chiamare in Java per fare qualcosa che richiede un contesto (ad esempio, l'accesso a TelephonyManager per interrogare l'IMEI).Ottenere un contesto da NativeActivity

Come si ottiene un Contesto valido per la mia attività?

La struttura ANativeActivity contiene una varietà di dati utili per la mia applicazione, come l'ambiente JavaVM e JNI, ecc. Contiene anche un puntatore di lavoro che punta all'oggetto di classe di NativeActivity. Quello che non contiene è un puntatore di lavoro che punta all'istanza di NativeActivity. Non vedo nulla di utile in struct android_app, neanche.

Deve essere possibile farlo; qualche idea come?

+0

Possibile doppia domanda. Controlla questo http://stackoverflow.com/questions/4449864/access-android-context-in-ndk-application – weakwire

+0

No, quella domanda si riferisce al NDK vecchio stile (dove era strettamente call-out da Java), mentre Sto usando NDK di nuova concezione NativeActivity (dove l'app principale è scritta in codice nativo e chiama in Java). –

risposta

4

Nonostante il nome, la struttura clazz della struttura ANativeActivity punta attualmente all'istanza android.app.NativeActivity.
Controllare this post per un esempio di utilizzo di una chiamata JNI dal codice Native Activity a Java.

+0

I documenti nell'intestazione dicono che è anche una classe --- ma sì, ora provo a usarlo ovviamente è l'istanza piuttosto che la classe. Grazie! –

+0

Sì, è vero. Il documento è confuso poiché descrive il campo clazz come 'La classe Java di NativeActivity'. L'unico suggerimento debole è il tipo 'clazz':' jobject' invece di 'jclass'. Tuttavia vale la pena di segnalare un bug/una richiesta di funzionalità per migliorare i documenti. – Idolon

Problemi correlati