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
This commit is contained in:
Hans-Christoph Steiner 2016-09-09 15:34:47 +02:00
parent f102ccff60
commit a08a32020a
6 changed files with 30 additions and 2 deletions

View File

@ -301,8 +301,9 @@ public class FDroidApp extends Application {
configureTor(Preferences.get().isTorEnabled()); configureTor(Preferences.get().isTorEnabled());
// TODO enable this based on a preference if (Preferences.get().isKeepingInstallHistory()) {
InstallHistoryService.register(this); InstallHistoryService.register(this);
}
String packageName = getString(R.string.install_history_reader_packageName); String packageName = getString(R.string.install_history_reader_packageName);
String unset = getString(R.string.install_history_reader_packageName_UNSET); String unset = getString(R.string.install_history_reader_packageName_UNSET);

View File

@ -55,6 +55,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
public static final String PREF_IGN_TOUCH = "ignoreTouchscreen"; public static final String PREF_IGN_TOUCH = "ignoreTouchscreen";
public static final String PREF_KEEP_CACHE_TIME = "keepCacheFor"; public static final String PREF_KEEP_CACHE_TIME = "keepCacheFor";
public static final String PREF_UNSTABLE_UPDATES = "unstableUpdates"; 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_EXPERT = "expert";
public static final String PREF_PRIVILEGED_INSTALLER = "privilegedInstaller"; public static final String PREF_PRIVILEGED_INSTALLER = "privilegedInstaller";
public static final String PREF_UNINSTALL_PRIVILEGED_APP = "uninstallPrivilegedApp"; 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 boolean DEFAULT_LOCAL_REPO_BONJOUR = true;
private static final long DEFAULT_KEEP_CACHE_TIME = TimeUnit.DAYS.toMillis(1); 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_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_LOCAL_REPO_HTTPS = false;
private static final boolean DEFAULT_INCOMP_VER = false; private static final boolean DEFAULT_INCOMP_VER = false;
private static final boolean DEFAULT_EXPERT = 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); 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() { public boolean showIncompatibleVersions() {
return preferences.getBoolean(PREF_INCOMP_VER, DEFAULT_INCOMP_VER); return preferences.getBoolean(PREF_INCOMP_VER, DEFAULT_INCOMP_VER);
} }

View File

@ -52,6 +52,9 @@ public class InstallHistoryService extends IntentService {
private static BroadcastReceiver broadcastReceiver; private static BroadcastReceiver broadcastReceiver;
public static void register(Context context) { public static void register(Context context) {
if (broadcastReceiver != null) {
return; // already registered
}
IntentFilter intentFilter = new IntentFilter(); IntentFilter intentFilter = new IntentFilter();
intentFilter.addDataScheme("http"); intentFilter.addDataScheme("http");
intentFilter.addDataScheme("https"); intentFilter.addDataScheme("https");
@ -78,6 +81,7 @@ public class InstallHistoryService extends IntentService {
public static void unregister(Context context) { public static void unregister(Context context) {
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context); LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
localBroadcastManager.unregisterReceiver(broadcastReceiver); localBroadcastManager.unregisterReceiver(broadcastReceiver);
broadcastReceiver = null;
} }
public static void queue(Context context, Intent intent) { public static void queue(Context context, Intent intent) {

View File

@ -19,6 +19,7 @@ import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.PreferencesActivity; import org.fdroid.fdroid.PreferencesActivity;
import org.fdroid.fdroid.R; import org.fdroid.fdroid.R;
import org.fdroid.fdroid.installer.InstallHistoryService;
import org.fdroid.fdroid.installer.PrivilegedInstaller; import org.fdroid.fdroid.installer.PrivilegedInstaller;
import info.guardianproject.netcipher.NetCipher; import info.guardianproject.netcipher.NetCipher;
@ -193,6 +194,14 @@ public class PreferencesFragment extends PreferenceFragment
} }
break; break;
case Preferences.PREF_KEEP_INSTALL_HISTORY:
CheckBoxPreference p = (CheckBoxPreference) findPreference(key);
if (p.isChecked()) {
InstallHistoryService.register(getContext());
} else {
InstallHistoryService.unregister(getContext());
}
break;
} }
} }

View File

@ -14,6 +14,8 @@
<string name="updates">Updates</string> <string name="updates">Updates</string>
<string name="unstable_updates">Unstable updates</string> <string name="unstable_updates">Unstable updates</string>
<string name="unstable_updates_summary">Suggest updates to unstable versions</string> <string name="unstable_updates_summary">Suggest updates to unstable versions</string>
<string name="keep_install_history">Keep install history</string>
<string name="keep_install_history_summary">Store a log of all installs and uninstalls inside F-Droid</string>
<string name="other">Other</string> <string name="other">Other</string>
<string name="update_interval">Automatic update interval</string> <string name="update_interval">Automatic update interval</string>

View File

@ -91,6 +91,12 @@
android:summary="@string/unstable_updates_summary" android:summary="@string/unstable_updates_summary"
android:defaultValue="false" android:defaultValue="false"
android:dependency="expert" /> android:dependency="expert" />
<CheckBoxPreference
android:key="keepInstallHistory"
android:title="@string/keep_install_history"
android:summary="@string/keep_install_history_summary"
android:defaultValue="false"
android:dependency="expert" />
<CheckBoxPreference android:title="@string/system_installer" <CheckBoxPreference android:title="@string/system_installer"
android:defaultValue="false" android:defaultValue="false"
android:key="privilegedInstaller" android:key="privilegedInstaller"