mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-31 23:03:54 +01:00
Fix: Handle system-level language management for Android 13+ (API 33)
- Added a check in `prepareAppLanguages()` to skip manual UI language selection for Android 13+ where the system manages app language. - Updated logic to ensure that the language selection dialog is shown only for devices running Android versions below API 33. - Retained existing logic for description and secondary language preferences.
This commit is contained in:
parent
952ed1d700
commit
5690942025
3 changed files with 38 additions and 2 deletions
|
|
@ -136,7 +136,33 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
|
|
||||||
// Gets current language code from shared preferences
|
// Gets current language code from shared preferences
|
||||||
String languageCode;
|
String languageCode;
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
// **Added:** Disable the app's UI language preference for Android 13 and above
|
||||||
|
appUiLanguageListPreference.setEnabled(false);
|
||||||
|
appUiLanguageListPreference.setSummary(getString(R.string.use_system_language));
|
||||||
|
} else {
|
||||||
|
// **Existing code remains for older Android versions**
|
||||||
|
keyLanguageListPreference = appUiLanguageListPreference.getKey();
|
||||||
|
languageCode = getCurrentLanguageCode(keyLanguageListPreference);
|
||||||
|
assert languageCode != null;
|
||||||
|
if (languageCode.equals("")) {
|
||||||
|
// If current language code is empty, means none selected by user yet so use phone local
|
||||||
|
appUiLanguageListPreference.setSummary(Locale.getDefault().getDisplayLanguage());
|
||||||
|
} else {
|
||||||
|
// If any language is selected by user previously, use it
|
||||||
|
Locale defLocale = createLocale(languageCode);
|
||||||
|
appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
|
||||||
|
}
|
||||||
|
appUiLanguageListPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
|
// **No change:** Existing method call
|
||||||
|
prepareAppLanguages(appUiLanguageListPreference.getKey());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/*
|
||||||
appUiLanguageListPreference = findPreference("appUiDefaultLanguagePref");
|
appUiLanguageListPreference = findPreference("appUiDefaultLanguagePref");
|
||||||
assert appUiLanguageListPreference != null;
|
assert appUiLanguageListPreference != null;
|
||||||
keyLanguageListPreference = appUiLanguageListPreference.getKey();
|
keyLanguageListPreference = appUiLanguageListPreference.getKey();
|
||||||
|
|
@ -159,6 +185,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Continue with other preferences
|
||||||
descriptionLanguageListPreference = findPreference("descriptionDefaultLanguagePref");
|
descriptionLanguageListPreference = findPreference("descriptionDefaultLanguagePref");
|
||||||
assert descriptionLanguageListPreference != null;
|
assert descriptionLanguageListPreference != null;
|
||||||
keyLanguageListPreference = descriptionLanguageListPreference.getKey();
|
keyLanguageListPreference = descriptionLanguageListPreference.getKey();
|
||||||
|
|
@ -311,6 +340,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
HashMap<Integer, String> selectedLanguages = new HashMap<>();
|
HashMap<Integer, String> selectedLanguages = new HashMap<>();
|
||||||
|
|
||||||
if (keyListPreference.equals("appUiDefaultLanguagePref")) {
|
if (keyListPreference.equals("appUiDefaultLanguagePref")) {
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
// For Android 13+, the system manages language, so we skip manual selection
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
assert languageCode != null;
|
assert languageCode != null;
|
||||||
if (languageCode.equals("")) {
|
if (languageCode.equals("")) {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
<string name="nearby_filter_search">Search View</string>
|
<string name="nearby_filter_search">Search View</string>
|
||||||
<string name="nearby_filter_state">Place State</string>
|
<string name="nearby_filter_state">Place State</string>
|
||||||
<string name="appwidget_img">Pic of the Day</string>
|
<string name="appwidget_img">Pic of the Day</string>
|
||||||
|
<string name="use_system_language">Using system language</string>
|
||||||
|
|
||||||
<!--Other strings-->
|
<!--Other strings-->
|
||||||
<plurals name="uploads_pending_notification_indicator">
|
<plurals name="uploads_pending_notification_indicator">
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,10 @@
|
||||||
android:entries="@array/pref_theme_entries"
|
android:entries="@array/pref_theme_entries"
|
||||||
android:entryValues="@array/pref_theme_entries_values"
|
android:entryValues="@array/pref_theme_entries_values"
|
||||||
app:useSimpleSummaryProvider="true"
|
app:useSimpleSummaryProvider="true"
|
||||||
|
android:dependency="is_below_android_13"
|
||||||
android:defaultValue="0" />
|
android:defaultValue="0" />
|
||||||
|
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue