From a08a32020a8625375a8e38ef69edfdee2e0a9469 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 9 Sep 2016 15:34:47 +0200 Subject: [PATCH] add preference to control storing install history For now, this is disabled by default and hidden in the expert preferences since it doesn't do anything yet inside of F-Droid. It is useful now for whitelabel builds to fetch the install history from another app. #396 --- app/src/main/java/org/fdroid/fdroid/FDroidApp.java | 5 +++-- app/src/main/java/org/fdroid/fdroid/Preferences.java | 6 ++++++ .../fdroid/fdroid/installer/InstallHistoryService.java | 4 ++++ .../fdroid/views/fragments/PreferencesFragment.java | 9 +++++++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences.xml | 6 ++++++ 6 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index 3998e883f..c4a9369c2 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -301,8 +301,9 @@ public class FDroidApp extends Application { configureTor(Preferences.get().isTorEnabled()); - // TODO enable this based on a preference - InstallHistoryService.register(this); + if (Preferences.get().isKeepingInstallHistory()) { + InstallHistoryService.register(this); + } String packageName = getString(R.string.install_history_reader_packageName); String unset = getString(R.string.install_history_reader_packageName_UNSET); diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index 1973d4dd0..7a5b91bed 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -55,6 +55,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh public static final String PREF_IGN_TOUCH = "ignoreTouchscreen"; public static final String PREF_KEEP_CACHE_TIME = "keepCacheFor"; 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_PRIVILEGED_INSTALLER = "privilegedInstaller"; public static final String PREF_UNINSTALL_PRIVILEGED_APP = "uninstallPrivilegedApp"; @@ -75,6 +76,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh //private static final boolean DEFAULT_LOCAL_REPO_BONJOUR = true; private static final long DEFAULT_KEEP_CACHE_TIME = TimeUnit.DAYS.toMillis(1); private static final boolean DEFAULT_UNSTABLE_UPDATES = false; + private static final boolean DEFAULT_KEEP_INSTALL_HISTORY = false; //private static final boolean DEFAULT_LOCAL_REPO_HTTPS = false; private static final boolean DEFAULT_INCOMP_VER = false; private static final boolean DEFAULT_EXPERT = false; @@ -184,6 +186,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh return preferences.getBoolean(PREF_UNSTABLE_UPDATES, DEFAULT_UNSTABLE_UPDATES); } + public boolean isKeepingInstallHistory() { + return preferences.getBoolean(PREF_KEEP_INSTALL_HISTORY, DEFAULT_KEEP_INSTALL_HISTORY); + } + public boolean showIncompatibleVersions() { return preferences.getBoolean(PREF_INCOMP_VER, DEFAULT_INCOMP_VER); } diff --git a/app/src/main/java/org/fdroid/fdroid/installer/InstallHistoryService.java b/app/src/main/java/org/fdroid/fdroid/installer/InstallHistoryService.java index e111b15df..6d930c850 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/InstallHistoryService.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/InstallHistoryService.java @@ -52,6 +52,9 @@ public class InstallHistoryService extends IntentService { private static BroadcastReceiver broadcastReceiver; public static void register(Context context) { + if (broadcastReceiver != null) { + return; // already registered + } IntentFilter intentFilter = new IntentFilter(); intentFilter.addDataScheme("http"); intentFilter.addDataScheme("https"); @@ -78,6 +81,7 @@ public class InstallHistoryService extends IntentService { public static void unregister(Context context) { LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context); localBroadcastManager.unregisterReceiver(broadcastReceiver); + broadcastReceiver = null; } public static void queue(Context context, Intent intent) { diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java index 4304b87c6..c1355b5ad 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java @@ -19,6 +19,7 @@ import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.PreferencesActivity; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.installer.InstallHistoryService; import org.fdroid.fdroid.installer.PrivilegedInstaller; import info.guardianproject.netcipher.NetCipher; @@ -193,6 +194,14 @@ public class PreferencesFragment extends PreferenceFragment } break; + case Preferences.PREF_KEEP_INSTALL_HISTORY: + CheckBoxPreference p = (CheckBoxPreference) findPreference(key); + if (p.isChecked()) { + InstallHistoryService.register(getContext()); + } else { + InstallHistoryService.unregister(getContext()); + } + break; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a3a30b88f..d23295a97 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -14,6 +14,8 @@ Updates Unstable updates Suggest updates to unstable versions + Keep install history + Store a log of all installs and uninstalls inside F-Droid Other Automatic update interval diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index aa80594bd..96ae03aaa 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -91,6 +91,12 @@ android:summary="@string/unstable_updates_summary" android:defaultValue="false" android:dependency="expert" /> +