diff options
author | Elliott Hughes <enh@google.com> | 2014-09-26 12:30:47 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2014-09-26 15:18:20 -0700 |
commit | f839b4fcb6b179529585765517895a8c90fe315b (patch) | |
tree | 406660ee666f40dd9bda2ace4107fab9bd4d8d24 /services/core/java/com/android/server/MountService.java | |
parent | 6b0a880e13b217b670f27bfe8ef3a13b3bb51af0 (diff) | |
download | frameworks_base-f839b4fcb6b179529585765517895a8c90fe315b.zip frameworks_base-f839b4fcb6b179529585765517895a8c90fe315b.tar.gz frameworks_base-f839b4fcb6b179529585765517895a8c90fe315b.tar.bz2 |
Set the system locale correctly even on an encrypted device.
Bug: 17659622
Change-Id: Ibbbd5b959bfab5345f20b556c4720d0910b50084
Diffstat (limited to 'services/core/java/com/android/server/MountService.java')
-rw-r--r-- | services/core/java/com/android/server/MountService.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java index ea24d7c..7f24d07 100644 --- a/services/core/java/com/android/server/MountService.java +++ b/services/core/java/com/android/server/MountService.java @@ -19,6 +19,7 @@ package com.android.server; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import android.Manifest; +import android.app.ActivityManagerNative; import android.app.AppOpsManager; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -28,6 +29,7 @@ import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.content.pm.UserInfo; +import android.content.res.Configuration; import android.content.res.ObbInfo; import android.content.res.Resources; import android.content.res.TypedArray; @@ -94,6 +96,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicInteger; @@ -821,6 +824,10 @@ class MountService extends IMountService.Stub */ mConnectedSignal.countDown(); + // On an encrypted device we can't see system properties yet, so pull + // the system locale out of the mount service. + copyLocaleFromMountService(); + // Let package manager load internal ASECs. mPms.scanAvailableAsecs(); @@ -830,6 +837,28 @@ class MountService extends IMountService.Stub }.start(); } + private void copyLocaleFromMountService() { + String systemLocale; + try { + systemLocale = getField(StorageManager.SYSTEM_LOCALE_KEY); + } catch (RemoteException e) { + return; + } + if (TextUtils.isEmpty(systemLocale)) { + return; + } + + Slog.d(TAG, "Got locale " + systemLocale + " from mount service"); + Locale locale = Locale.forLanguageTag(systemLocale); + Configuration config = new Configuration(); + config.setLocale(locale); + try { + ActivityManagerNative.getDefault().updateConfiguration(config); + } catch (RemoteException e) { + Slog.e(TAG, "Error setting system locale from mount service", e); + } + } + /** * Callback from NativeDaemonConnector */ |