Fix unexpected language changes on SIM card insertion.
There are two separate issues here that need to be fixed, both
boil down to the fact that adding an imperative (userSetLocale)
to the Configuration is a bad idea. Because of this:
- We'd never persist the first user set configuration if it was en_US,
because of an erroneous call to Configuration.setLocale.
- ActivityManager.getConfiguration would sometimes return a
Configuration with userSetLocale == true, which means callers with
the right permissions would inadvertently persist a locale they didn't
want to persist.
bug: 18879010
(cherry picked from commit c63a16b8e4)
Change-Id: I4d714eb1f75afc0a5bf4d53a374df4ed16e328bf
This commit is contained in:
@@ -2303,7 +2303,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
ConfigurationInfo.GL_ES_VERSION_UNDEFINED);
|
||||
|
||||
mConfiguration.setToDefaults();
|
||||
mConfiguration.setLocale(Locale.getDefault());
|
||||
mConfiguration.locale = Locale.getDefault();
|
||||
|
||||
mConfigurationSeq = mConfiguration.seq = 1;
|
||||
mProcessCpuTracker.init();
|
||||
@@ -16197,6 +16197,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
Configuration ci;
|
||||
synchronized(this) {
|
||||
ci = new Configuration(mConfiguration);
|
||||
ci.userSetLocale = false;
|
||||
}
|
||||
return ci;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user