diff --git a/app/src/main/java/org/fdroid/fdroid/data/App.java b/app/src/main/java/org/fdroid/fdroid/data/App.java index 25f1fcd2b..af7bb638e 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/App.java +++ b/app/src/main/java/org/fdroid/fdroid/data/App.java @@ -19,7 +19,6 @@ import android.text.TextUtils; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import com.fasterxml.jackson.annotation.JacksonInject; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -545,7 +544,7 @@ public class App extends ValueObject implements Comparable, Parcelable { } } if (Build.VERSION.SDK_INT >= 24) { - LocaleList localeList = getLocales(); + LocaleList localeList = Resources.getSystem().getConfiguration().getLocales(); String[] sortedLocaleList = localeList.toLanguageTags().split(","); Arrays.sort(sortedLocaleList, new java.util.Comparator() { @Override @@ -625,11 +624,6 @@ public class App extends ValueObject implements Comparable, Parcelable { tvScreenshots = getLocalizedListEntry(localized, localesToUse, "tvScreenshots"); } - @RequiresApi(api = Build.VERSION_CODES.N) - LocaleList getLocales() { - return Resources.getSystem().getConfiguration().getLocales(); - } - /** * Returns the right localized version of this entry, based on an immitation of * the logic that Android/Java uses. On Android >= 24, this can get the diff --git a/app/src/test/java/org/fdroid/fdroid/data/LocaleSelectionTest.java b/app/src/test/java/org/fdroid/fdroid/data/LocaleSelectionTest.java index 60ec8b872..184d93dbc 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/LocaleSelectionTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/LocaleSelectionTest.java @@ -1,6 +1,6 @@ package org.fdroid.fdroid.data; - +import android.content.res.Configuration; import android.os.Build; import android.os.LocaleList; import org.fdroid.fdroid.TestUtils; @@ -20,6 +20,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) +@SuppressWarnings("LocalVariableName") public class LocaleSelectionTest { private static final String KEY = "summary"; @@ -92,10 +93,12 @@ public class LocaleSelectionTest { assertTrue(Build.VERSION.SDK_INT >= 24); App app = spy(new App()); - LocaleList localeList = mock(LocaleList.class); // we mock both the getLocales call and the conversion to a language tag string. - doReturn(localeList).when(app).getLocales(); + Configuration configuration = mock(Configuration.class); + LocaleList localeList = mock(LocaleList.class); + doReturn(localeList).when(configuration).getLocales(); + // Set both default locale as well as the locale list, because the algorithm uses both... Locale.setDefault(new Locale("en", "US")); when(localeList.toLanguageTags()).thenReturn("en-US,de-DE");