From bdc9a14c2ab434ed67fbb7e46aeff35d6e06864c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 19 Apr 2017 00:12:29 +0200 Subject: [PATCH] use android-24+ LocaleList when choosing localized index data When choosing localized data from the index, this includes the new LocaleList feature that represents the user's preferred locale ranking https://developer.android.com/reference/android/os/LocaleList.html --- .../main/java/org/fdroid/fdroid/data/App.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) 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 bb4f84d0f..1c0e71a80 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/App.java +++ b/app/src/main/java/org/fdroid/fdroid/data/App.java @@ -7,9 +7,12 @@ import android.content.pm.FeatureInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.AssetManager; +import android.content.res.Resources; import android.content.res.XmlResourceParser; import android.database.Cursor; +import android.os.Build; import android.os.Environment; +import android.os.LocaleList; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.Nullable; @@ -383,14 +386,19 @@ public class App extends ValueObject implements Comparable, Parcelable { Set locales = localized.keySet(); Set localesToUse = new LinkedHashSet<>(); - if (locales.contains(localeTag)) { localesToUse.add(localeTag); } - for (String l : locales) { - if (l.startsWith(languageTag)) { - localesToUse.add(l); - break; + if (Build.VERSION.SDK_INT >= 24) { + LocaleList localeList = Resources.getSystem().getConfiguration().getLocales(); + localesToUse.addAll(Arrays.asList(localeList.toLanguageTags().split(","))); + } + for (String toUse : localesToUse) { + for (String l : locales) { + if (l.startsWith(toUse.split("-")[0])) { + localesToUse.add(l); + break; + } } } if (locales.contains("en-US")) {