Loading core/java/android/content/res/AssetManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -962,6 +962,11 @@ public final class AssetManager { */ public native final String getBasePackageName(int index); /** * {@hide} */ public native final String getBaseResourcePackageName(int index); /** * {@hide} */ Loading core/jni/android_util_AssetManager.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -1840,6 +1840,18 @@ static jstring android_content_AssetManager_getBasePackageName(JNIEnv* env, jobj return JNI_FALSE; } String16 packageName(am->getBasePackageName(index)); return env->NewString((const jchar*)packageName.string(), packageName.size()); } static jstring android_content_AssetManager_getBaseResourcePackageName(JNIEnv* env, jobject clazz, jint index) { AssetManager* am = assetManagerForJavaObject(env, clazz); if (am == NULL) { return JNI_FALSE; } String16 packageName(am->getResources().getBasePackageName(index)); return env->NewString((const jchar*)packageName.string(), packageName.size()); } Loading Loading @@ -1893,6 +1905,8 @@ static JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_getBasePackageCount }, { "getBasePackageName", "(I)Ljava/lang/String;", (void*) android_content_AssetManager_getBasePackageName }, { "getBaseResourcePackageName", "(I)Ljava/lang/String;", (void*) android_content_AssetManager_getBaseResourcePackageName }, { "getBasePackageId", "(I)I", (void*) android_content_AssetManager_getBasePackageId }, { "addIconPath", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I", Loading include/androidfw/AssetManager.h +5 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,8 @@ public: Vector<String8>& targets, Vector<String8>& overlays, uint32_t** outData, size_t* outSize); String8 getBasePackageName(int index); private: struct asset_path { Loading Loading @@ -393,6 +395,9 @@ private: mutable ResTable* mResources; ResTable_config* mConfig; String8 mBasePackageName; int32_t mBasePackageIndex; /* * Cached data for "loose" files. This lets us avoid poking at the * filesystem when searching for loose assets. Each entry is the Loading libs/androidfw/AssetManager.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -174,7 +174,8 @@ int32_t AssetManager::getGlobalCount() AssetManager::AssetManager(CacheMode cacheMode) : mLocale(NULL), mVendor(NULL), mResources(NULL), mConfig(new ResTable_config), mCacheMode(cacheMode), mCacheValid(false) mCacheMode(cacheMode), mCacheValid(false), mBasePackageIndex(-1) { int count = android_atomic_inc(&gCount)+1; //ALOGI("Creating AssetManager %p #%d\n", this, count); Loading Loading @@ -464,6 +465,20 @@ String8 AssetManager::getPkgName(const char *apkPath) { return pkgName; } /** * Returns the base package name as defined in the AndroidManifest.xml */ String8 AssetManager::getBasePackageName(int index) { if (index >= mAssetPaths.size()) return String8::empty(); if (mBasePackageName.isEmpty() || mBasePackageIndex != index) { mBasePackageName = getPkgName(mAssetPaths[index].path.string()); mBasePackageIndex = index; } return mBasePackageName; } String8 AssetManager::getOverlayResPath(const char* targetApkPath, const char* overlayApkPath) { //Remove leading '/' Loading Loading
core/java/android/content/res/AssetManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -962,6 +962,11 @@ public final class AssetManager { */ public native final String getBasePackageName(int index); /** * {@hide} */ public native final String getBaseResourcePackageName(int index); /** * {@hide} */ Loading
core/jni/android_util_AssetManager.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -1840,6 +1840,18 @@ static jstring android_content_AssetManager_getBasePackageName(JNIEnv* env, jobj return JNI_FALSE; } String16 packageName(am->getBasePackageName(index)); return env->NewString((const jchar*)packageName.string(), packageName.size()); } static jstring android_content_AssetManager_getBaseResourcePackageName(JNIEnv* env, jobject clazz, jint index) { AssetManager* am = assetManagerForJavaObject(env, clazz); if (am == NULL) { return JNI_FALSE; } String16 packageName(am->getResources().getBasePackageName(index)); return env->NewString((const jchar*)packageName.string(), packageName.size()); } Loading Loading @@ -1893,6 +1905,8 @@ static JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_getBasePackageCount }, { "getBasePackageName", "(I)Ljava/lang/String;", (void*) android_content_AssetManager_getBasePackageName }, { "getBaseResourcePackageName", "(I)Ljava/lang/String;", (void*) android_content_AssetManager_getBaseResourcePackageName }, { "getBasePackageId", "(I)I", (void*) android_content_AssetManager_getBasePackageId }, { "addIconPath", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I", Loading
include/androidfw/AssetManager.h +5 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,8 @@ public: Vector<String8>& targets, Vector<String8>& overlays, uint32_t** outData, size_t* outSize); String8 getBasePackageName(int index); private: struct asset_path { Loading Loading @@ -393,6 +395,9 @@ private: mutable ResTable* mResources; ResTable_config* mConfig; String8 mBasePackageName; int32_t mBasePackageIndex; /* * Cached data for "loose" files. This lets us avoid poking at the * filesystem when searching for loose assets. Each entry is the Loading
libs/androidfw/AssetManager.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -174,7 +174,8 @@ int32_t AssetManager::getGlobalCount() AssetManager::AssetManager(CacheMode cacheMode) : mLocale(NULL), mVendor(NULL), mResources(NULL), mConfig(new ResTable_config), mCacheMode(cacheMode), mCacheValid(false) mCacheMode(cacheMode), mCacheValid(false), mBasePackageIndex(-1) { int count = android_atomic_inc(&gCount)+1; //ALOGI("Creating AssetManager %p #%d\n", this, count); Loading Loading @@ -464,6 +465,20 @@ String8 AssetManager::getPkgName(const char *apkPath) { return pkgName; } /** * Returns the base package name as defined in the AndroidManifest.xml */ String8 AssetManager::getBasePackageName(int index) { if (index >= mAssetPaths.size()) return String8::empty(); if (mBasePackageName.isEmpty() || mBasePackageIndex != index) { mBasePackageName = getPkgName(mAssetPaths[index].path.string()); mBasePackageIndex = index; } return mBasePackageName; } String8 AssetManager::getOverlayResPath(const char* targetApkPath, const char* overlayApkPath) { //Remove leading '/' Loading