From e21d91c694e828e6285cc50e79b2a6be6e8c692b Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Sun, 24 Oct 2010 14:56:38 -0700 Subject: Fix issue #3126018: No way to specify NativeActivity's native method Change-Id: I59de6a543e7f7f45d963a905829a3f56f32bf8cf --- core/jni/android_app_NativeActivity.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'core/jni') diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp index 63d3578..45fd5a0 100644 --- a/core/jni/android_app_NativeActivity.cpp +++ b/core/jni/android_app_NativeActivity.cpp @@ -626,7 +626,8 @@ static int mainWorkCallback(int fd, int events, void* data) { // ------------------------------------------------------------------------ static jint -loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQueue, +loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName, + jobject messageQueue, jstring internalDataDir, jstring externalDataDir, int sdkVersion, jobject jAssetMgr, jbyteArray savedState) { @@ -640,8 +641,11 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQ env->ReleaseStringUTFChars(path, pathStr); if (handle != NULL) { + const char* funcStr = env->GetStringUTFChars(funcName, NULL); code = new NativeCode(handle, (ANativeActivity_createFunc*) - dlsym(handle, "ANativeActivity_onCreate")); + dlsym(handle, funcStr)); + env->ReleaseStringUTFChars(funcName, funcStr); + if (code->createActivityFunc == NULL) { LOGW("ANativeActivity_onCreate not found"); delete code; @@ -999,7 +1003,7 @@ finishPreDispatchKeyEvent_native(JNIEnv* env, jobject clazz, jint handle, } static const JNINativeMethod g_methods[] = { - { "loadNativeCode", "(Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)I", + { "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)I", (void*)loadNativeCode_native }, { "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native }, { "onStartNative", "(I)V", (void*)onStart_native }, -- cgit v1.1