diff options
| -rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java index 1e171d3f8210..8abdc641d675 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java @@ -37,10 +37,12 @@ import android.provider.Settings; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.ArraySet; +import android.util.Slog; import java.util.Locale; public class SettingsHelper { + private static final String TAG = "SettingsHelper"; private static final String SILENT_RINGTONE = "_silent"; private Context mContext; private AudioManager mAudioManager; @@ -324,11 +326,17 @@ public class SettingsHelper { */ void setLocaleData(byte[] data, int size) { // Check if locale was set by the user: - Configuration conf = mContext.getResources().getConfiguration(); - // TODO: The following is not working as intended because the network is forcing a locale - // change after registering. Need to find some other way to detect if the user manually - // changed the locale - if (conf.userSetLocale) return; // Don't change if user set it in the SetupWizard + final ContentResolver cr = mContext.getContentResolver(); + final boolean userSetLocale = mContext.getResources().getConfiguration().userSetLocale; + final boolean provisioned = Settings.Global.getInt(cr, + Settings.Global.DEVICE_PROVISIONED, 0) != 0; + if (userSetLocale || provisioned) { + // Don't change if user set it in the SetupWizard, or if this is a post-setup + // deferred restore operation + Slog.i(TAG, "Not applying restored locale; " + + (userSetLocale ? "user already specified" : "device already provisioned")); + return; + } final String[] availableLocales = mContext.getAssets().getLocales(); // Replace "_" with "-" to deal with older backups. |