2010-11-02 9 views

Respuesta

12

Tendrá que llamar llamando a la función API de Java - no hay interfaz JNI para intenciones.

Primero busca la clase para Intent, luego busca los métodos para construir intenciones y emitirlos, y llámalos.

EDITAR: Aquí hay un ejemplo incompleto. jniEnv se pasa a todas sus funciones JNI.

jclass activityClass = jniEnv->FindClass("android/app/Activity"); 
jmethodID startAcitivtyMethod = jniEnv->GetMethodID(activityClass , "startActivity", "(Landroid/content/Intent;)V"); 
jniEnv->CallVoidMethod(yourActivityObject, startAcitivityMethod, yourIntentObject); 
+0

muy buena explicación. incluso si esa no fuera una descripción completa, mereces +1. –

+1

, pero ¿qué sucede si quiero llamar desde una devolución de llamada (en otro hilo), en cuyo caso no puedo obtener el jniEnv – Juude

+0

¿Hay alguna solución como esta para non-jni? – RocketRandom

0

creo que no hay nada complicado en el mensaje de radiodifusión de código nativo, pero sólo en el caso si la función nativa se llama desde la aplicación Android de Java para que pueda pasar de un contexto. Hasta donde yo sé, no existe el Contexto para aplicaciones puramente nativas, por lo tanto, no se puede transmitir un intento.

0

Incluso una aplicación nativa pura puede transmitir una intención. Eso significa que, incluso cuando la actividad nativa es el iniciador, aún podemos transmitir intenciones.

Cuestiones relacionadas