2011-09-02 74 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