2011-09-02 71 views
5

我有一個使用NativeActivity的應用程序。我想調用Java來做一些需要Context的事情(例如,訪問TelephonyManager來查詢IMEI)。從NativeActivity獲取上下文

如何爲我的活動獲取有效的上下文?

ANativeActivity結構包含我的應用程序的各種有用數據,例如JavaVM和JNI環境等。它還包含指向我的NativeActivity的類對象的jobject。它不包含的是一個指向NativeActivity的實例的工作項目。我也沒有在struct android_app中看到任何有用的東西。

它必須是可能的;任何想法如何?

+0

可能的雙重問題。看看這個問題http://stackoverflow.com/questions/4449864/access-android-context-in-ndk-application – weakwire

+0

不,那個問題是指老式的NDK(它嚴格來自Java的調用),而我正在使用新式NativeActivity NDK(主應用程序使用本機代碼編寫並調用到Java中)。 –

回答

4

儘管它的名字clazzANativeActivity的成員實際上指向的是android.app.NativeActivity實例。
有關使用從本機活動到Java代碼的JNI調用的示例,請查看this post

+0

標題中的文檔說它也是一個類---但是,現在我真的嘗試使用它,這顯然是實例而不是類。謝謝! –

+0

是的,的確如此。該文檔是一個令人困惑的文檔,因爲它將clazz字段描述爲「NativeActivity Java類」。唯一弱點是'clazz'類型:'jobject'而不是'jclass'。儘管如此,值得發佈的文檔改進的bug /功能請求。 – Idolon