2010-11-02 48 views

回答

12

您需要通過調用Java API函數調用它 - 沒有用於意圖的JNI接口。

首先查找類Intent,然後查找構建intents的方法並播放它們,然後調用它們。

編輯:這是一個不完整的的例子。將jniEnv傳遞到您的所有JNI函數中。

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

很好的解釋。即使這不是完整的描述,你應該得到+1。 – 2011-12-14 07:10:12

+1

但如果我想從回調調用(在另一個線程中),在這種情況下,我無法獲得jniEnv – Juude 2015-07-23 10:06:21

+0

有沒有類似於非jni的解決方案? – RocketRandom 2016-12-13 10:48:02

0

我認爲沒有什麼,從本地代碼廣播消息,但只有在情況複雜,如果本地函數是從Android的Java應用程序中調用,所以你可以通過上下文。據我所知,純粹的原生應用程序沒有Context這樣的東西,因此你不能廣播一個意圖。

0

即使是純原生應用程序也可以廣播一個意圖。這意味着,即使本機活動是啓動器,我們仍然可以播放Intents。