From d491fc151a59f84e68c277ea8e4beafa3cef2bee 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 8047e0d0a..04c101f37 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -233,6 +233,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)); }