2010-11-02 19 views

risposta

12

Avrete bisogno di chiamarlo chiamando la funzione API Java - non esiste un'interfaccia JNI per intenti.

Prima cercare la classe per Intent, quindi cercare i metodi per la creazione di intenti e la loro trasmissione e chiamarli.

MODIFICA: qui è un incompleto esempio. jniEnv è passato in tutte le tue funzioni JNI.

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

spiegazione molto bella. anche se questa non era una descrizione completa, ti meriti +1. –

+1

ma cosa succede se voglio chiamare da un callback (in un altro thread), Nel qual caso non riesco a ottenere il jniEnv – Juude

+0

C'è qualche soluzione come questa per non-jni? – RocketRandom

0

penso che ci sia nulla di complicato in un messaggio trasmesso da codice nativo, ma solo nel caso in cui se la funzione nativa viene chiamato da un'applicazione Java di Android in modo da poter passare un contesto. Per quanto ne so, non esiste una cosa come Contesto per applicazioni puramente native quindi non è possibile trasmettere un intento.

0

Anche un'applicazione nativa pura può trasmettere un intent. Ciò significa che, anche quando l'attività nativa è il programma di avvio, possiamo ancora trasmettere Intenti.

Problemi correlati