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 |         // 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,7 +12,9 @@ | ||||||
|             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:defaultValue="0" /> |           android:dependency="is_below_android_13" | ||||||
|  |           android:defaultValue="0" /> | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     </PreferenceCategory> |     </PreferenceCategory> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Mincheng
						Mincheng