diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index fa4079a77..60d6f7964 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -53,6 +53,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh public static final String PREF_UNSTABLE_UPDATES = "unstableUpdates"; public static final String PREF_KEEP_INSTALL_HISTORY = "keepInstallHistory"; public static final String PREF_EXPERT = "expert"; + public static final String PREF_FORCE_OLD_INDEX = "forceOldIndex"; public static final String PREF_PRIVILEGED_INSTALLER = "privilegedInstaller"; public static final String PREF_UNINSTALL_PRIVILEGED_APP = "uninstallPrivilegedApp"; public static final String PREF_LOCAL_REPO_NAME = "localRepoName"; @@ -82,6 +83,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh public static final String DEFAULT_PROXY_HOST = "127.0.0.1"; public static final int DEFAULT_PROXY_PORT = 8118; private static final boolean DEFAULT_SHOW_NFC_DURING_SWAP = true; + private static final boolean DEFAULT_FORCE_OLD_INDEX = false; private static final boolean DEFAULT_POST_PRIVILEGED_INSTALL = false; public enum Theme { @@ -114,6 +116,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh initialized.put(key, false); } + public boolean isForceOldIndexEnabled() { + return preferences.getBoolean(PREF_FORCE_OLD_INDEX, DEFAULT_FORCE_OLD_INDEX); + } + /** * 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 diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateService.java b/app/src/main/java/org/fdroid/fdroid/UpdateService.java index 5efe407d2..db0b49e1e 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateService.java @@ -409,7 +409,7 @@ public class UpdateService extends IntentService { try { RepoUpdater updater = new IndexV1Updater(this, repo); //TODO setProgressListeners(updater); - if (!updater.update()) { + if (Preferences.get().isForceOldIndexEnabled() || !updater.update()) { updater = new RepoUpdater(getBaseContext(), repo); setProgressListeners(updater); updater.update(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32b0f2301..d846ca125 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,6 +18,8 @@ Suggest updates to unstable versions Keep install history Store a log of all installs and uninstalls inside F-Droid + Force old index format + In case there are bugs or compatibility issues, use the XML app index Other Automatic update interval diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 9ebaaf4c7..848eabfe2 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -111,6 +111,12 @@ android:summary="@string/keep_install_history_summary" android:defaultValue="false" android:dependency="expert" /> +