Issue 128554259: Sim card name incorrect after user change system language.
[root cause ]PhoneAccount not update when both sim card name was changed
[changes ]mLocaleChangeReceiver recreate account after user change system language
[issue address]https://partnerissuetracker.corp.google.com/u/0/issues/128554259
Change-Id: I5e5583aa57ab118fea86763a5cf614089b4c7231
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index fce4dfe..2324a16 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -722,6 +722,15 @@
}
};
+ private BroadcastReceiver mLocaleChangeReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.i(this, "Locale change; re-registering phone accounts.");
+ tearDownAccounts();
+ setupAccounts();
+ }
+ };
+
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override
public void onServiceStateChanged(ServiceState serviceState) {
@@ -955,6 +964,11 @@
filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
mContext.registerReceiver(mReceiver, filter);
+ //We also need to listen for locale changes
+ //(e.g. system language changed -> SIM card name changed)
+ mContext.registerReceiver(mLocaleChangeReceiver,
+ new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
+
// Listen to the RTT system setting so that we update it when the user flips it.
ContentObserver rttUiSettingObserver = new ContentObserver(
new Handler(Looper.getMainLooper())) {