Don't overwrite the system global gender settings

Developer setting shouldn't rewrite the proper user-selected value.
This is best effort and will still overwrite it when the values
used to be the same.

Bug: 332955145
Test: manual
Change-Id: I7c350ff84dfc7e216835ab3b45b7c1316ea78155
This commit is contained in:
Yurii Zubrytskyi
2024-04-25 17:06:28 -07:00
parent d1347a5d85
commit 67466de364

View File

@@ -69,12 +69,19 @@ public class GrammaticalGenderPreferenceController extends DeveloperOptionsPrefe
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final var oldValue = SystemProperties.getInt(GRAMMATICAL_GENDER_PROPERTY,
Configuration.GRAMMATICAL_GENDER_NOT_SPECIFIED);
SystemProperties.set(GRAMMATICAL_GENDER_PROPERTY, newValue.toString());
updateState(mPreference);
try {
Configuration config = mActivityManager.getConfiguration();
config.setGrammaticalGender(Integer.parseInt(newValue.toString()));
mActivityManager.updatePersistentConfiguration(config);
// Only apply the developer settings value if it is the one currently used,
// otherwise it means there's some kind of override that we don't want to
// touch here.
if (config.getGrammaticalGender() == oldValue) {
config.setGrammaticalGender(Integer.parseInt(newValue.toString()));
mActivityManager.updatePersistentConfiguration(config);
}
} catch (RemoteException ex) {
// intentional no-op
}