【问题标题】:Getting a Context from a NativeActivity从 NativeActivity 获取上下文
【发布时间】:2011-11-09 05:59:47
【问题描述】:

我有一个使用 NativeActivity 的应用程序。我想调用 Java 来做一些需要上下文的事情(例如,访问 TelephonyManager 来查询 IMEI)。

如何为我的活动获取有效的上下文?

ANativeActivity 结构包含对我的应用程序有用的各种数据,例如 JavaVM 和 JNI 环境等。它还包含一个指向我的 NativeActivity 的类对象的作业对象。它不包含指向 NativeActivity 的 instance 的作业对象。我也没有在struct android_app 中看到任何有用的信息。

必须可以做到这一点;有什么想法吗?

【问题讨论】:

  • 可能的双重问题。看看这个stackoverflow.com/questions/4449864/…
  • 不,这个问题指的是旧式 NDK(严格从 Java 中调用),而我使用的是新式 NativeActivity NDK(主应用程序是用本机代码编写的并调用 Java)。

标签: android java-native-interface android-ndk native-activity


【解决方案1】:

尽管名称为 clazz 结构的 clazz 成员实际上指向 android.app.NativeActivity 实例。
查看this post 以获取使用从 Native Activity 到 Java 代码的 JNI 调用的示例。

【讨论】:

  • 标题中的文档说它也是一个类 --- 但是是的,现在我实际上尝试使用它,它显然是实例而不是类。谢谢!
  • 是的,没错。该文档令人困惑,因为它将 clazz 字段描述为The NativeActivity Java class。唯一的弱提示是clazz 类型:jobject 而不是jclass。尽管如此,发布文档改进的错误/功能请求还是值得的。
猜你喜欢
  • 2013-08-22
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 2011-07-15
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多