mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 14:53:59 +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 | ||||
|         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"); | ||||
|         assert appUiLanguageListPreference != null; | ||||
|         keyLanguageListPreference = appUiLanguageListPreference.getKey(); | ||||
|  | @ -159,6 +185,9 @@ public class SettingsFragment extends PreferenceFragmentCompat { | |||
|             } | ||||
|         }); | ||||
| 
 | ||||
|  */ | ||||
| 
 | ||||
|         // Continue with other preferences | ||||
|         descriptionLanguageListPreference = findPreference("descriptionDefaultLanguagePref"); | ||||
|         assert descriptionLanguageListPreference != null; | ||||
|         keyLanguageListPreference = descriptionLanguageListPreference.getKey(); | ||||
|  | @ -311,6 +340,10 @@ public class SettingsFragment extends PreferenceFragmentCompat { | |||
|         HashMap<Integer, String> selectedLanguages = new HashMap<>(); | ||||
| 
 | ||||
|         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; | ||||
|             if (languageCode.equals("")) { | ||||
|  |  | |||
|  | @ -22,6 +22,7 @@ | |||
|   <string name="nearby_filter_search">Search View</string> | ||||
|   <string name="nearby_filter_state">Place State</string> | ||||
|   <string name="appwidget_img">Pic of the Day</string> | ||||
|   <string name="use_system_language">Using system language</string> | ||||
| 
 | ||||
|   <!--Other strings--> | ||||
|   <plurals name="uploads_pending_notification_indicator"> | ||||
|  |  | |||
|  | @ -12,8 +12,10 @@ | |||
|             android:entries="@array/pref_theme_entries" | ||||
|             android:entryValues="@array/pref_theme_entries_values" | ||||
|             app:useSimpleSummaryProvider="true" | ||||
|           android:dependency="is_below_android_13" | ||||
|           android:defaultValue="0" /> | ||||
| 
 | ||||
| 
 | ||||
|     </PreferenceCategory> | ||||
| 
 | ||||
|     <PreferenceCategory | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Mincheng
						Mincheng