summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorEric Fischer <enf@google.com>2009-10-22 15:22:50 -0700
committerEric Fischer <enf@google.com>2009-10-22 15:28:05 -0700
commit63c2d9ed9cb2174137ee43acb6ee2a86ff4451ea (patch)
tree805cc9c2289899b38a53c5aa3ee748da49db7e23 /services
parentfee0f5773335e42f4ffdf2d2d1c344ceee3ccb33 (diff)
downloadframeworks_base-63c2d9ed9cb2174137ee43acb6ee2a86ff4451ea.zip
frameworks_base-63c2d9ed9cb2174137ee43acb6ee2a86ff4451ea.tar.gz
frameworks_base-63c2d9ed9cb2174137ee43acb6ee2a86ff4451ea.tar.bz2
Update the names of the widgets when the locale changes.
Bug 1814373, Bug 2152730
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/AppWidgetService.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java
index f8b8ecc..6bf7102 100644
--- a/services/java/com/android/server/AppWidgetService.java
+++ b/services/java/com/android/server/AppWidgetService.java
@@ -51,6 +51,7 @@ import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import java.util.HashMap;
import java.util.HashSet;
@@ -105,6 +106,7 @@ class AppWidgetService extends IAppWidgetService.Stub
}
Context mContext;
+ Locale mLocale;
PackageManager mPackageManager;
AlarmManager mAlarmManager;
ArrayList<Provider> mInstalledProviders = new ArrayList<Provider>();
@@ -131,6 +133,11 @@ class AppWidgetService extends IAppWidgetService.Stub
mContext.registerReceiver(mBroadcastReceiver,
new IntentFilter(Intent.ACTION_BOOT_COMPLETED), null, null);
+ // Register for configuration changes so we can update the names
+ // of the widgets when the locale changes.
+ mContext.registerReceiver(mBroadcastReceiver,
+ new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED), null, null);
+
// Register for broadcasts about package install, etc., so we can
// update the provider list.
IntentFilter filter = new IntentFilter();
@@ -1046,6 +1053,22 @@ class AppWidgetService extends IAppWidgetService.Stub
//Log.d(TAG, "received " + action);
if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
sendInitialBroadcasts();
+ } else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) {
+ Locale revised = Locale.getDefault();
+ if (revised == null || mLocale == null ||
+ !(revised.equals(mLocale))) {
+ mLocale = revised;
+
+ synchronized (mAppWidgetIds) {
+ int N = mInstalledProviders.size();
+ for (int i=N-1; i>=0; i--) {
+ Provider p = mInstalledProviders.get(i);
+ String pkgName = p.info.provider.getPackageName();
+ updateProvidersForPackageLocked(pkgName);
+ }
+ saveStateLocked();
+ }
+ }
} else {
Uri uri = intent.getData();
if (uri == null) {