diff options
| author | Dianne Hackborn <hackbod@google.com> | 2011-01-16 18:30:29 -0800 |
|---|---|---|
| committer | Dianne Hackborn <hackbod@google.com> | 2011-01-16 18:43:04 -0800 |
| commit | 805fd7ee0e5dc2939e85c84f78d9890a51982bc0 (patch) | |
| tree | e2487cd3d7917fa6a126463e2cc5771295544627 /core | |
| parent | cf18c4788af740773c9b2720a1c4ed5f45454b8e (diff) | |
| download | frameworks_base-805fd7ee0e5dc2939e85c84f78d9890a51982bc0.zip frameworks_base-805fd7ee0e5dc2939e85c84f78d9890a51982bc0.tar.gz frameworks_base-805fd7ee0e5dc2939e85c84f78d9890a51982bc0.tar.bz2 | |
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
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 10 | ||||
| -rw-r--r-- | core/java/android/app/ContextImpl.java | 12 | ||||
| -rw-r--r-- | core/java/android/app/NativeActivity.java | 4 | ||||
| -rw-r--r-- | core/java/android/content/Context.java | 7 | ||||
| -rw-r--r-- | core/java/android/content/ContextWrapper.java | 5 | ||||
| -rw-r--r-- | core/java/android/os/Environment.java | 12 | ||||
| -rw-r--r-- | core/jni/android_app_NativeActivity.cpp | 28 |
7 files changed, 61 insertions, 17 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 4eae14b..d5aa961 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -122,6 +122,8 @@ public class ActivityManager { /** * Thumbnail representation of the task's last state. Must * use {@link ActivityManager#TASKS_GET_THUMBNAILS} to have this set. + * @hide -- this is not scalable, need to have a separate API to get + * the bitmap. */ public Bitmap thumbnail; @@ -203,6 +205,7 @@ public class ActivityManager { /** * Flag for use with {@link #getRecentTasks}: also return the thumbnail * bitmap (if available) for each recent task. + * @hide */ public static final int TASKS_GET_THUMBNAILS = 0x0001000; @@ -214,8 +217,7 @@ public class ActivityManager { * actual number returned may be smaller, depending on how many tasks the * user has started and the maximum number the system can remember. * @param flags Information about what to return. May be any combination - * of {@link #RECENT_WITH_EXCLUDED}, {@link #RECENT_IGNORE_UNAVAILABLE}, - * and {@link #TASKS_GET_THUMBNAILS}. + * of {@link #RECENT_WITH_EXCLUDED} and {@link #RECENT_IGNORE_UNAVAILABLE}. * * @return Returns a list of RecentTaskInfo records describing each of * the recent tasks. @@ -261,8 +263,8 @@ public class ActivityManager { public ComponentName topActivity; /** - * Thumbnail representation of the task's current state. Must - * use {@link ActivityManager#TASKS_GET_THUMBNAILS} to have this set. + * Thumbnail representation of the task's current state. Currently + * always null. */ public Bitmap thumbnail; diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index e133ea0..6f63990 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -153,6 +153,7 @@ class ContextImpl extends Context { private File mPreferencesDir; private File mFilesDir; private File mCacheDir; + private File mObbDir; private File mExternalFilesDir; private File mExternalCacheDir; @@ -647,6 +648,17 @@ class ContextImpl extends Context { } @Override + public File getObbDir() { + synchronized (mSync) { + if (mObbDir == null) { + mObbDir = Environment.getExternalStorageAppObbDirectory( + getPackageName()); + } + return mObbDir; + } + } + + @Override public File getCacheDir() { synchronized (mSync) { if (mCacheDir == null) { diff --git a/core/java/android/app/NativeActivity.java b/core/java/android/app/NativeActivity.java index a5c49ec..35cc324 100644 --- a/core/java/android/app/NativeActivity.java +++ b/core/java/android/app/NativeActivity.java @@ -84,7 +84,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, private boolean mDestroyed; private native int loadNativeCode(String path, String funcname, MessageQueue queue, - String internalDataPath, String externalDataPath, int sdkVersion, + String internalDataPath, String obbPath, String externalDataPath, int sdkVersion, AssetManager assetMgr, byte[] savedState); private native void unloadNativeCode(int handle); @@ -191,7 +191,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, ? savedInstanceState.getByteArray(KEY_NATIVE_SAVED_STATE) : null; mNativeHandle = loadNativeCode(path, funcname, Looper.myQueue(), - getFilesDir().toString(), + getFilesDir().toString(), getObbDir().toString(), Environment.getExternalStorageAppFilesDirectory(ai.packageName).toString(), Build.VERSION.SDK_INT, getAssets(), nativeSavedState); diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 227df21..d14cf4d 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -516,6 +516,13 @@ public abstract class Context { public abstract File getExternalFilesDir(String type); /** + * Return the directory where this application's OBB files (if there + * are any) can be found. Note if the application does not have any OBB + * files, this directory may not exist. + */ + public abstract File getObbDir(); + + /** * Returns the absolute path to the application specific cache directory * on the filesystem. These files will be ones that get deleted first when the * device runs low on storage. diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java index 545144e..3928aaf 100644 --- a/core/java/android/content/ContextWrapper.java +++ b/core/java/android/content/ContextWrapper.java @@ -191,6 +191,11 @@ public class ContextWrapper extends Context { } @Override + public File getObbDir() { + return mBase.getObbDir(); + } + + @Override public File getCacheDir() { return mBase.getCacheDir(); } diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java index 4f188f8..cc95642 100644 --- a/core/java/android/os/Environment.java +++ b/core/java/android/os/Environment.java @@ -107,6 +107,10 @@ public class Environment { = new File (new File(getDirectory("EXTERNAL_STORAGE", "/sdcard"), "Android"), "media"); + private static final File EXTERNAL_STORAGE_ANDROID_OBB_DIRECTORY + = new File (new File(getDirectory("EXTERNAL_STORAGE", "/sdcard"), + "Android"), "obb"); + private static final File DOWNLOAD_CACHE_DIRECTORY = getDirectory("DOWNLOAD_CACHE", "/cache"); @@ -304,6 +308,14 @@ public class Environment { } /** + * Generates the raw path to an application's OBB files + * @hide + */ + public static File getExternalStorageAppObbDirectory(String packageName) { + return new File(EXTERNAL_STORAGE_ANDROID_OBB_DIRECTORY, packageName); + } + + /** * Generates the path to an application's files. * @hide */ diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp index b033878..0430a81 100644 --- a/core/jni/android_app_NativeActivity.cpp +++ b/core/jni/android_app_NativeActivity.cpp @@ -500,8 +500,9 @@ struct NativeCode : public ANativeActivity { void* dlhandle; ANativeActivity_createFunc* createActivityFunc; - String8 internalDataPath; - String8 externalDataPath; + String8 internalDataPathObj; + String8 externalDataPathObj; + String8 obbPathObj; sp<ANativeWindow> 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 }, |
