From 29e69fcf1d07098587a95d85f0a1aa081e818126 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 15 Mar 2023 16:06:32 +0100 Subject: [PATCH 1/2] use Locale DISPLAY category on Android >= 24 https://gitlab.com/fdroid/fdroidclient/-/issues/1440#note_1315001793 --- .../org/fdroid/fdroid/compat/LocaleCompat.java | 17 +++++++++++++++++ .../fdroid/views/RepoDetailsActivity.java | 4 ++-- .../fdroid/views/apps/AppListActivity.java | 6 +++--- .../fdroid/fdroid/work/FDroidMetricsWorker.java | 3 ++- 4 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/org/fdroid/fdroid/compat/LocaleCompat.java diff --git a/app/src/main/java/org/fdroid/fdroid/compat/LocaleCompat.java b/app/src/main/java/org/fdroid/fdroid/compat/LocaleCompat.java new file mode 100644 index 000000000..f2931306c --- /dev/null +++ b/app/src/main/java/org/fdroid/fdroid/compat/LocaleCompat.java @@ -0,0 +1,17 @@ +package org.fdroid.fdroid.compat; + +import android.os.Build; +import java.util.Locale; + +/** + * @see use default DISPLAY category Locale + */ +public class LocaleCompat { + public static Locale getDefault() { + if (Build.VERSION.SDK_INT >= 24) { + return Locale.getDefault(java.util.Locale.Category.DISPLAY); + } else { + return Locale.getDefault(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java index 6e22d85af..440d78f41 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java @@ -47,13 +47,13 @@ import org.fdroid.fdroid.NfcNotEnabledActivity; import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; +import org.fdroid.fdroid.compat.LocaleCompat; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.DBHelper; import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Locale; import java.util.concurrent.Callable; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -413,7 +413,7 @@ public class RepoDetailsActivity extends AppCompatActivity { disposable = Single.fromCallable(() -> appDao.getNumberOfAppsInRepository(repoId)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(appCount -> numApps.setText(String.format(Locale.getDefault(), "%d", appCount))); + .subscribe(appCount -> numApps.setText(String.format(LocaleCompat.getDefault(), "%d", appCount))); setupDescription(repoView, repo); setupRepoFingerprint(repoView, repo); diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java index 745f5ead2..d1da61657 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java @@ -44,6 +44,7 @@ import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; +import org.fdroid.fdroid.compat.LocaleCompat; import org.fdroid.fdroid.data.DBHelper; import org.fdroid.fdroid.views.main.MainActivity; @@ -57,7 +58,6 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.Collections; import java.util.List; -import java.util.Locale; /** * Provides scrollable listing of apps for search and category views. @@ -269,9 +269,9 @@ public class AppListActivity extends AppCompatActivity implements CategoryTextWa return Long.compare(o2.getLastUpdated(), o1.getLastUpdated()); } else if (sortClauseSelected.equals(SortClause.WORDS)) { String n1 = (o1.getName() == null ? "" : o1.getName()) - .toLowerCase(Locale.getDefault()); + .toLowerCase(LocaleCompat.getDefault()); String n2 = (o2.getName() == null ? "" : o2.getName()) - .toLowerCase(Locale.getDefault()); + .toLowerCase(LocaleCompat.getDefault()); return n1.compareTo(n2); } return 0; diff --git a/app/src/main/java/org/fdroid/fdroid/work/FDroidMetricsWorker.java b/app/src/main/java/org/fdroid/fdroid/work/FDroidMetricsWorker.java index 5a3254a5c..2d961a8f9 100644 --- a/app/src/main/java/org/fdroid/fdroid/work/FDroidMetricsWorker.java +++ b/app/src/main/java/org/fdroid/fdroid/work/FDroidMetricsWorker.java @@ -30,6 +30,7 @@ import org.apache.commons.io.FileUtils; import org.fdroid.download.HttpPoster; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Utils; +import org.fdroid.fdroid.compat.LocaleCompat; import org.fdroid.fdroid.installer.InstallHistoryService; import org.fdroid.fdroid.net.DownloaderFactory; import org.json.JSONArray; @@ -281,7 +282,7 @@ public class FDroidMetricsWorker extends Worker { private static class CleanInsightsReport { MatomoEvent[] events = new MatomoEvent[0]; final long idsite = 3; // NOPMD - final String lang = Locale.getDefault().getLanguage(); + final String lang = LocaleCompat.getDefault().getLanguage(); final String ua = Utils.getUserAgent(); private String getJsonString() throws JSONException { From 034de8e7f9002ffa8dda3fc281881023c3ba0b14 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 16 Mar 2023 14:16:54 +0100 Subject: [PATCH 2/2] UpdateServiceTest needs app-full-debug.apk to work see 3fa5e98fc4b72d407acf80773e128e2164a64ece in !1135 --- app/build.gradle | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 668dbe823..f80e02c65 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -200,3 +200,15 @@ dependencies { androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' androidTestImplementation 'androidx.work:work-testing:2.7.1' } + +// org.fdroid.fdroid.updater.UpdateServiceTest needs app-full-debug.apk +android.productFlavors.all { flavor -> + if (flavor.name.equals("full")) { + project.afterEvaluate { project -> + def dep = tasks.getByName("assembleFullDebug") + project.tasks.withType(Test) { task -> + task.dependsOn dep + } + } + } +}