summaryrefslogtreecommitdiffstats
path: root/core/java/android/app/ContextImpl.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-08-14 16:45:30 -0700
committerDianne Hackborn <hackbod@google.com>2012-08-14 16:51:38 -0700
commit756220bd1912535840388a6743830d2e59ad4964 (patch)
treeee97c666d4bb1f015fd3e89463af09c712ce47e4 /core/java/android/app/ContextImpl.java
parent863b19bc8fcfa436011781b67a237fcce3cb703a (diff)
downloadframeworks_base-756220bd1912535840388a6743830d2e59ad4964.zip
frameworks_base-756220bd1912535840388a6743830d2e59ad4964.tar.gz
frameworks_base-756220bd1912535840388a6743830d2e59ad4964.tar.bz2
Add API to create new contexts with custom configurations.
This allows you to, say, make a Context whose configuration is set to a different density than the actual density of the device. The main API is Context.createConfigurationContext(). There is also a new API on ContextThemeWrapper that allows you to apply an override context before its resources are retrieved, which addresses some feature requests from developers to be able to customize the context their app is running in. Change-Id: I88364986660088521e24b567e2fda22fb7042819
Diffstat (limited to 'core/java/android/app/ContextImpl.java')
-rw-r--r--core/java/android/app/ContextImpl.java22
1 files changed, 14 insertions, 8 deletions
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 4496ce8..1ef14eb 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -37,6 +37,7 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.content.res.CompatibilityInfo;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
@@ -525,7 +526,7 @@ class ContextImpl extends Context {
@Override
public AssetManager getAssets() {
- return mResources.getAssets();
+ return getResources().getAssets();
}
@Override
@@ -1591,6 +1592,16 @@ class ContextImpl extends Context {
}
@Override
+ public Context createConfigurationContext(Configuration overrideConfiguration) {
+ ContextImpl c = new ContextImpl();
+ c.init(mPackageInfo, null, mMainThread);
+ c.mResources = mMainThread.getTopLevelResources(
+ mPackageInfo.getResDir(), overrideConfiguration,
+ mResources.getCompatibilityInfo());
+ return c;
+ }
+
+ @Override
public boolean isRestricted() {
return mRestricted;
}
@@ -1659,12 +1670,11 @@ class ContextImpl extends Context {
" compatiblity info:" + container.getDisplayMetrics());
}
mResources = mainThread.getTopLevelResources(
- mPackageInfo.getResDir(), container.getCompatibilityInfo());
+ mPackageInfo.getResDir(), null, container.getCompatibilityInfo());
}
mMainThread = mainThread;
mContentResolver = new ApplicationContentResolver(this, mainThread);
-
- setActivityToken(activityToken);
+ mActivityToken = activityToken;
}
final void init(Resources resources, ActivityThread mainThread) {
@@ -1691,10 +1701,6 @@ class ContextImpl extends Context {
return mReceiverRestrictedContext = new ReceiverRestrictedContext(getOuterContext());
}
- final void setActivityToken(IBinder token) {
- mActivityToken = token;
- }
-
final void setOuterContext(Context context) {
mOuterContext = context;
}