在Android上获取/创建本机Java应用程序上下文

在Android上获取/创建本机Java应用程序上下文,android,android-ndk,android-context,Android,Android Ndk,Android Context,我有本机组件,其中没有创建或运行任何活动。由于Android在Java中拥有大部分有用的功能,因此我除了使用Java之外,没有其他办法获得Android_ID。我已经在native中设置了概念验证代码来实现这一点,并且可以正常工作。但是我有一个实例jobject,当然还有JNIEnv。我想以某种方式设置它,这样我就不需要将任何java实例传递给我的本机代码。这意味着我需要创建/获取上下文对象。然后我可以让ContentResolver获得ANDROID\u ID。因为ANDROID\u ID是恒

我有本机组件,其中没有创建或运行任何活动。由于Android在Java中拥有大部分有用的功能,因此我除了使用Java之外,没有其他办法获得Android_ID。我已经在native中设置了概念验证代码来实现这一点,并且可以正常工作。但是我有一个实例jobject,当然还有JNIEnv。我想以某种方式设置它,这样我就不需要将任何java实例传递给我的本机代码。这意味着我需要创建/获取上下文对象。然后我可以让ContentResolver获得ANDROID\u ID。因为ANDROID\u ID是恒定的,ContentResolver似乎对所有活动都是一样的,我想一定有办法。我还认为,所有人的背景都是一样的,但我没有确切的知识。既然我可以编写本机代码,但我对Android应用程序基础设施了解不多,那么谁能提出任何解决方案呢

我的想法:

  • 在本机代码中创建一些伪活动,并在获取id后立即将其杀死

  • 传递JavaJobject实例并获取上下文。(有效,但不需要。)


  • 为什么有独立的本机代码?您应该始终能够传递某种Java引用。是的,你可以,但我不会:)我很好奇,因为例如应用程序有一个普遍相同的上下文。。。您可以询问context.getApplicationContext()。因此,这暗示着应该有一些通用的方法来做到这一点……为什么不能只使用应用程序的上下文呢?您的代码绑定到一个流程,该流程(大致)绑定到应用程序生命周期。您能告诉我如何。。。当我本机中只有JNIEnv可用时:)对不起,据我所知,您需要传入一个java
    Context
    。尝试使用
    应用程序
    对象而不是
    活动