From 4b0eb32d30d39ce190e6343db8c638f7bfd7c9fd Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 23 Oct 2017 21:58:26 +0200 Subject: [PATCH] force all Android 5.0 devices to use the old index v0 XML format The workaround is fugly, so we really don't want to include it in the modern code. Luckily, we have old index support there :-D closes #1014 closes #1202 closes #1208 #111 --- app/src/main/java/org/fdroid/fdroid/FDroidApp.java | 9 +++++++++ app/src/main/java/org/fdroid/fdroid/Preferences.java | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index 031f6d588..0467b2980 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -285,6 +285,15 @@ public class FDroidApp extends Application { curTheme = Preferences.get().getTheme(); Preferences.get().configureProxy(); + // bug specific to exactly 5.0 makes it only work with the old index + // which includes an ugly, hacky workaround + // https://gitlab.com/fdroid/fdroidclient/issues/1014 + if (Build.VERSION.SDK_INT == 21) { + Preferences p = Preferences.get(); + p.setExpertMode(true); + p.setForceOldIndex(true); + } + InstalledAppProviderService.compareToPackageManager(this); AppUpdateStatusService.scanDownloadedApks(this); diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index 60d6f7964..3d6b614e1 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -120,6 +120,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh return preferences.getBoolean(PREF_FORCE_OLD_INDEX, DEFAULT_FORCE_OLD_INDEX); } + public void setForceOldIndex(boolean flag) { + preferences.edit().putBoolean(PREF_FORCE_OLD_INDEX, flag).apply(); + } + /** * Whether to use the Privileged Installer, based on if it is installed. Only the disabled * state is stored as a preference since the enabled state is based entirely on the presence @@ -225,6 +229,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh return preferences.getBoolean(PREF_EXPERT, DEFAULT_EXPERT); } + public void setExpertMode(boolean flag) { + preferences.edit().putBoolean(PREF_EXPERT, flag).apply(); + } + public Theme getTheme() { return Theme.valueOf(preferences.getString(Preferences.PREF_THEME, Preferences.DEFAULT_THEME)); }