diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/app/NativeActivity.java | 6 | ||||
| -rw-r--r-- | core/java/android/content/res/AssetManager.java | 1 | ||||
| -rw-r--r-- | core/jni/android_app_NativeActivity.cpp | 12 |
3 files changed, 13 insertions, 6 deletions
diff --git a/core/java/android/app/NativeActivity.java b/core/java/android/app/NativeActivity.java index ccc9ae3..3238b82 100644 --- a/core/java/android/app/NativeActivity.java +++ b/core/java/android/app/NativeActivity.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.content.res.AssetManager; import android.graphics.PixelFormat; import android.os.Build; import android.os.Bundle; @@ -52,7 +53,8 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, private boolean mDestroyed; private native int loadNativeCode(String path, MessageQueue queue, - String internalDataPath, String externalDataPath, int sdkVersion); + String internalDataPath, String externalDataPath, int sdkVersion, + AssetManager assetMgr); private native void unloadNativeCode(int handle); private native void onStartNative(int handle); @@ -138,7 +140,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, mNativeHandle = loadNativeCode(path, Looper.myQueue(), getFilesDir().toString(), Environment.getExternalStorageAppFilesDirectory(ai.packageName).toString(), - Build.VERSION.SDK_INT); + Build.VERSION.SDK_INT, getAssets()); if (mNativeHandle == 0) { throw new IllegalArgumentException("Unable to load native library: " + path); diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java index 1070f08..73d9458 100644 --- a/core/java/android/content/res/AssetManager.java +++ b/core/java/android/content/res/AssetManager.java @@ -70,6 +70,7 @@ public final class AssetManager { // For communication with native code. private int mObject; + private int mNObject; // used by the NDK private StringBlock mStringBlocks[] = null; diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp index acbf854..0b2b507 100644 --- a/core/jni/android_app_NativeActivity.cpp +++ b/core/jni/android_app_NativeActivity.cpp @@ -24,6 +24,7 @@ #include <android_runtime/AndroidRuntime.h> #include <android_runtime/android_view_Surface.h> #include <android_runtime/android_app_NativeActivity.h> +#include <android_runtime/android_util_AssetManager.h> #include <surfaceflinger/Surface.h> #include <ui/egl/android_natives.h> #include <ui/InputTransport.h> @@ -451,7 +452,8 @@ static bool mainWorkCallback(int fd, int events, void* data) { static jint loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQueue, - jstring internalDataDir, jstring externalDataDir, int sdkVersion) + jstring internalDataDir, jstring externalDataDir, int sdkVersion, + jobject jAssetMgr) { LOG_TRACE("loadNativeCode_native"); @@ -502,7 +504,7 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQ } code->env = env; code->clazz = env->NewGlobalRef(clazz); - + const char* dirStr = env->GetStringUTFChars(internalDataDir, NULL); code->internalDataPath = dirStr; code->internalDataPath = code->internalDataPath.string(); @@ -512,9 +514,11 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQ code->externalDataPath = dirStr; code->externalDataPath = code->externalDataPath.string(); env->ReleaseStringUTFChars(path, dirStr); - + code->sdkVersion = sdkVersion; + code->assetManager = assetManagerForJavaObject(env, jAssetMgr); + code->createActivityFunc(code, NULL, 0); } @@ -770,7 +774,7 @@ dispatchKeyEvent_native(JNIEnv* env, jobject clazz, jint handle, jobject eventOb } static const JNINativeMethod g_methods[] = { - { "loadNativeCode", "(Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;I)I", + { "loadNativeCode", "(Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;I;Landroid/content/res/AssetManager)I", (void*)loadNativeCode_native }, { "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native }, { "onStartNative", "(I)V", (void*)onStart_native }, |
