我有一個純粹的本機應用程序,因爲我用的是android_native_app_glue和入口點到我的應用程序是findClass的找不到定製的Java類
android_main(..)
我也有一個Java助手類類型:
package abc.def.ghi
public class MyJavaClass extends Activity
{
public void callback()
{
Log.v(TAG, "In MyJavaClass");
}
}
我想從本地調用「回調」方法。我這樣做:
jclass myClass = env->FindClass("abc/def/ghi/MyJavaClass");
if(myClass == NULL)
LOGI("myClass null");
jmethodID mid = m_pEnv->GetMethodID(myClass, "callback", "()V");
if(mid == NULL)
LOGI("MID null");
m_pEnv->CallVoidMethod(myClass, mid);
但是,這會導致myClass爲空的消息。我的'env'指針應該沒問題,因爲當我在FindClass中傳遞「android/os/build」時,它會找到它,但找不到我的自定義類。
在LOGCAT中,我看到: 「JNI警告:無法調用Labc/def/ghi;對Ljava/Lang/Class實例進行回調;」
我認爲這意味着我的CallVoidMethod的第一個參數有問題。 我注意到,大多數人與被JAVAH生成的簽名函數內履行CallVoidMethod其他例子,它們使用obj
參數在他們CallVoidMethod
:
JNIEXPORT void JNICALL function(JNIEnv *env, jobject obj, jstring s)
不過我,因爲我的應用程序的不能使用此入口點是本地的。