Fix issue #2256032: Change CONFIGURATION_CHANGED and add a locale changed broadcast
You can no longer receive CONFIGURATION_CHANGED in a manifest, which is really really
bad (launching apps every time the screen is rotated!). A new LOCALE_CHANGED broadcast
is sent that you can receive in a manifest.
Change-Id: I80022375f0716db2e672382a29db3cea1af74702
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index cb9984a..e728091 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -12834,8 +12834,15 @@
}
}
Intent intent = new Intent(Intent.ACTION_CONFIGURATION_CHANGED);
+ intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
broadcastIntentLocked(null, null, intent, null, null, 0, null, null,
null, false, false, MY_PID, Process.SYSTEM_UID);
+ if ((changes&ActivityInfo.CONFIG_LOCALE) != 0) {
+ broadcastIntentLocked(null, null,
+ new Intent(Intent.ACTION_LOCALE_CHANGED),
+ null, null, 0, null, null,
+ null, false, false, MY_PID, Process.SYSTEM_UID);
+ }
AttributeCache ac = AttributeCache.instance();
if (ac != null) {