From 805fd7ee0e5dc2939e85c84f78d9890a51982bc0 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Sun, 16 Jan 2011 18:30:29 -0800 Subject: [PATCH] Add API to get path to OBBs. Also hide the bitmap thumbnail stuff, we can't support it in its current form. And fix some bugs with propagating paths to native code. Yikes! Change-Id: I13ab37ddbdba5c073489cba5eab035117d3c1574 --- api/11.xml | 231 ++++++++++++++++-- api/current.xml | 43 ++-- core/java/android/app/ActivityManager.java | 10 +- core/java/android/app/ContextImpl.java | 12 + core/java/android/app/NativeActivity.java | 4 +- core/java/android/content/Context.java | 7 + core/java/android/content/ContextWrapper.java | 5 + core/java/android/os/Environment.java | 12 + core/jni/android_app_NativeActivity.cpp | 28 ++- native/include/android/native_activity.h | 7 + .../src/android/test/mock/MockContext.java | 5 + 11 files changed, 305 insertions(+), 59 deletions(-) diff --git a/api/11.xml b/api/11.xml index 1733652679122..1ac57a16d1fc8 100644 --- a/api/11.xml +++ b/api/11.xml @@ -4250,6 +4250,17 @@ visibility="public" > + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/current.xml b/api/current.xml index f7172f40bc5d2..06c81b6c16368 100644 --- a/api/current.xml +++ b/api/current.xml @@ -25158,17 +25158,6 @@ visibility="public" > - - - - + + + + nativeWindow; int32_t lastWindowWidth; @@ -641,8 +642,8 @@ static int mainWorkCallback(int fd, int events, void* data) { static jint loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName, - jobject messageQueue, - jstring internalDataDir, jstring externalDataDir, int sdkVersion, + jobject messageQueue, jstring internalDataDir, jstring obbDir, + jstring externalDataDir, int sdkVersion, jobject jAssetMgr, jbyteArray savedState) { LOG_TRACE("loadNativeCode_native"); @@ -699,19 +700,24 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName code->clazz = env->NewGlobalRef(clazz); const char* dirStr = env->GetStringUTFChars(internalDataDir, NULL); - code->internalDataPath = dirStr; - code->internalDataPath = code->internalDataPath.string(); - env->ReleaseStringUTFChars(path, dirStr); + code->internalDataPathObj = dirStr; + code->internalDataPath = code->internalDataPathObj.string(); + env->ReleaseStringUTFChars(internalDataDir, dirStr); dirStr = env->GetStringUTFChars(externalDataDir, NULL); - code->externalDataPath = dirStr; - code->externalDataPath = code->externalDataPath.string(); - env->ReleaseStringUTFChars(path, dirStr); + code->externalDataPathObj = dirStr; + code->externalDataPath = code->externalDataPathObj.string(); + env->ReleaseStringUTFChars(externalDataDir, dirStr); code->sdkVersion = sdkVersion; code->assetManager = assetManagerForJavaObject(env, jAssetMgr); + dirStr = env->GetStringUTFChars(obbDir, NULL); + code->obbPathObj = dirStr; + code->obbPath = code->obbPathObj.string(); + env->ReleaseStringUTFChars(obbDir, dirStr); + jbyte* rawSavedState = NULL; jsize rawSavedSize = 0; if (savedState != NULL) { @@ -1022,7 +1028,7 @@ finishPreDispatchKeyEvent_native(JNIEnv* env, jobject clazz, jint handle, } static const JNINativeMethod g_methods[] = { - { "loadNativeCode", "(Ljava/lang/String;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;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)I", (void*)loadNativeCode_native }, { "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native }, { "onStartNative", "(I)V", (void*)onStart_native }, diff --git a/native/include/android/native_activity.h b/native/include/android/native_activity.h index d89bc8b9b6d3a..a361846ea416b 100644 --- a/native/include/android/native_activity.h +++ b/native/include/android/native_activity.h @@ -91,6 +91,13 @@ typedef struct ANativeActivity { * uses this to access binary assets bundled inside its own .apk file. */ AAssetManager* assetManager; + + /** + * Available starting with Honeycomb: path to the directory containing + * the application's OBB files (if any). If the app doesn't have any + * OBB files, this directory may not exist. + */ + const char* obbPath; } ANativeActivity; /** diff --git a/test-runner/src/android/test/mock/MockContext.java b/test-runner/src/android/test/mock/MockContext.java index 3b52252e34ae9..0b4fc51454b25 100644 --- a/test-runner/src/android/test/mock/MockContext.java +++ b/test-runner/src/android/test/mock/MockContext.java @@ -163,6 +163,11 @@ public class MockContext extends Context { throw new UnsupportedOperationException(); } + @Override + public File getObbDir() { + throw new UnsupportedOperationException(); + } + @Override public File getCacheDir() { throw new UnsupportedOperationException();