summaryrefslogtreecommitdiffstats
path: root/core/jni/android_app_NativeActivity.cpp
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-10-24 14:56:38 -0700
committerDianne Hackborn <hackbod@google.com>2010-10-24 14:56:38 -0700
commite21d91c694e828e6285cc50e79b2a6be6e8c692b (patch)
treebff7d5088aa8dc568c33a1c68a7dbd976ebe0f58 /core/jni/android_app_NativeActivity.cpp
parentb6a2256e5461160a89d077b761d3253d95ce869f (diff)
downloadframeworks_base-e21d91c694e828e6285cc50e79b2a6be6e8c692b.zip
frameworks_base-e21d91c694e828e6285cc50e79b2a6be6e8c692b.tar.gz
frameworks_base-e21d91c694e828e6285cc50e79b2a6be6e8c692b.tar.bz2
Fix issue #3126018: No way to specify NativeActivity's native method
Change-Id: I59de6a543e7f7f45d963a905829a3f56f32bf8cf
Diffstat (limited to 'core/jni/android_app_NativeActivity.cpp')
-rw-r--r--core/jni/android_app_NativeActivity.cpp10
1 files changed, 7 insertions, 3 deletions
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 },