2010-11-02 12 views

Antwort

12

Sie müssen es aufrufen, indem Sie die Java-API-Funktion aufrufen - es gibt keine JNI-Schnittstelle für Intents.

Zuerst die Klasse für Intent nachschlagen, dann die Methoden zum Konstruieren und Absenden von Intents nachschlagen und sie aufrufen.

EDIT: Hier ist ein unvollständig Beispiel. jniEnv wird an alle Ihre JNI-Funktionen übergeben.

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

sehr schöne Erklärung. Auch wenn das keine vollständige Beschreibung war, verdienst du +1. –

+1

aber was, wenn ich von einem Rückruf (in einem anderen Thread) anrufen möchte, In dem Fall kann ich nicht das jniEnv – Juude

+0

Gibt es eine Lösung wie diese für Nicht-jni? – RocketRandom

0

Ich denke, es gibt nichts in der Rundfunknachricht von nativen Code, sondern nur für den Fall kompliziert ist, wenn die native Funktion von Android Java-Anwendung aufgerufen wird, so dass Sie einen Kontext passieren können. Soweit ich weiß, gibt es keinen Kontext für rein native Anwendungen, daher kann man keine Absicht senden.

0

Sogar eine reine native Anwendung kann einen Intent senden. Das heißt, selbst wenn die native Aktivität der Launcher ist, können wir weiterhin Intents senden.

Verwandte Themen