2011-09-02 9 views
5

Tengo una aplicación que usa NativeActivity. Quiero llamar a Java para hacer algo que requiera un contexto (por ejemplo, acceder a TelephonyManager para consultar el IMEI).Obteniendo un contexto de una NativeActivity

¿Cómo obtengo un contexto válido para mi actividad?

La estructura ANativeActivity contiene una variedad de datos útiles para mi aplicación, como el entorno JavaVM y JNI, etc. También contiene un jobject que apunta al objeto de la clase NativeActivity. Lo que no contiene es un jobject que apunta a la instancia de NativeActivity. No veo nada útil en struct android_app, tampoco.

Debe ser posible hacer esto; alguna idea de como?

+0

Posible pregunta doble. Mira esto http://stackoverflow.com/questions/4449864/access-android-context-in-ndk-application – weakwire

+0

No, esa pregunta se refiere al viejo estilo NDK (donde fue estrictamente llamado por Java), mientras Estoy usando NativeActivity NDK de estilo nuevo (donde la aplicación principal está escrita en código nativo y se llama a Java). –

Respuesta

4

A pesar de su nombre, el miembro clazz de ANativeActivity struct apunta en realidad a la instancia android.app.NativeActivity.
Compruebe this post para ver un ejemplo del uso de una llamada JNI del código Native Activity to Java.

+0

Los documentos del encabezado dicen que también es una clase, pero sí, ahora que intento usarlo, obviamente es la instancia en lugar de la clase. ¡Gracias! –

+0

Sí, eso es cierto. El documento es confuso ya que describe clazz field como 'The NativeActivity Java class'. La única pista débil es 'clazz' type:' jobject' en lugar de 'jclass'. Sin embargo, vale la pena publicar una solicitud de error/función para la mejora de documentos. – Idolon

Cuestiones relacionadas