gpt4 book ai didi

Android JNI/NDK 应用上下文

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:17 24 4
gpt4 key购买 nike

我正在使用 JNI 通过 Qt 从 Android 获取音乐库。我调用了以下 Java 方法(已经实现),

public String getArtists(Context context)
...

我需要能够获取应用程序的上下文才能使其正常工作。

如果有帮助,当我使用 Java 时,以下代码提供了正确的上下文。

MainActivity.this

有人能帮忙解决这个问题吗?

非常感谢!

最佳答案

这取决于您在哪里调用电话。理想情况下,您将在 C++ 中缓存 MainActivity 指针。

缓存指针以便在以后的 JNI 调用中使用的一种方法是在 java 中添加一个 native 函数,例如 native void onCreateNative() 到您的 MainActivity 类。在 C++ 中,您将实现该方法并缓存“thiz”指针:

JNIEXPORT void JNICALL com_package_MainActivity_onCreateNative(JNIEnv *env, jobject thiz)
{
gCachedActivity = env->NewGlobalRef(thiz);
}

现在您可以在使用 MainActivity.this 的地方使用 gCachedActivity

env->CallObjectMethod(obj, s_getArtistsGetArtistsMethodID, gCachedActivity);

当然要将 obj 替换为您调用方法的对象。

最后,应该在 MainActivityonCreate() 方法中调用 onCreateNative()

关于Android JNI/NDK 应用上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com