Only override embedded activity locale if source package lookup yields locales to match
Calling Configuration#setLocales also sets the text direction for the containing Activity. If we pass an empty LocaleList to this method, then we lose the intended text direction for its locale. So this change will only override the target (embedded) Activity's locales if our package lookup for the host yields a populated LocaleList to provide. Bug: 277363604 Test: Verified on Pixel devices in Settings app Change-Id: I8bcdab0737c18f861f74a8f9bd2d15043359e27b
This commit is contained in:
@@ -306,7 +306,6 @@ import android.os.Bundle;
|
||||
import android.os.Debug;
|
||||
import android.os.IBinder;
|
||||
import android.os.IRemoteCallback;
|
||||
import android.os.LocaleList;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.Process;
|
||||
import android.os.RemoteCallbackList;
|
||||
@@ -10597,17 +10596,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
return;
|
||||
}
|
||||
|
||||
LocaleList locale;
|
||||
final ActivityTaskManagerInternal.PackageConfig appConfig =
|
||||
mAtmService.mPackageConfigPersister.findPackageConfiguration(
|
||||
task.realActivity.getPackageName(), mUserId);
|
||||
// if there is no app locale for the package, clear the target activity's locale.
|
||||
if (appConfig == null || appConfig.mLocales == null || appConfig.mLocales.isEmpty()) {
|
||||
locale = LocaleList.getEmptyLocaleList();
|
||||
} else {
|
||||
locale = appConfig.mLocales;
|
||||
// If package lookup yields locales, set the target activity's locales to match,
|
||||
// otherwise leave target activity as-is.
|
||||
if (appConfig != null && appConfig.mLocales != null && !appConfig.mLocales.isEmpty()) {
|
||||
resolvedConfig.setLocales(appConfig.mLocales);
|
||||
}
|
||||
resolvedConfig.setLocales(locale);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user