Merge branch 'enable-priv-ext-by-default' into 'master'
use Privileged Extension by default, when installed Now that the 0.2 release of Privileged Extension is tagged, it is starting to be integrated into ROMS, and is easy to flash to ROMed devices, it is time to make F-Droid use the Privileged Extension by default, if it is installed. See merge request !382
This commit is contained in:
commit
fa112ed303
@ -72,7 +72,6 @@ connected24:
|
||||
- rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
|
||||
- rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
|
||||
- exit $EXITVALUE
|
||||
allow_failure: true # remove once install it runs reliably
|
||||
|
||||
pmd:
|
||||
script:
|
||||
|
@ -2,6 +2,10 @@
|
||||
|
||||
* Support for Android 2.2 is dropped, 2.3.3 or later is now required
|
||||
|
||||
* Fixed APK Cache bugs, requiring the cache time be reset to 1 day
|
||||
|
||||
* Uses Privileged Extension by default, when its installed
|
||||
|
||||
### 0.100.1 (2016-06-21)
|
||||
|
||||
* Fix background crash after installing or updating apps
|
||||
|
@ -167,7 +167,7 @@ public class CleanCacheService extends IntentService {
|
||||
f.delete();
|
||||
}
|
||||
} else {
|
||||
CleanCacheService21.deleteIfOld(f, millisAgo);
|
||||
CleanCacheService21.deleteIfOld(f, olderThan);
|
||||
}
|
||||
}
|
||||
}
|
@ -69,7 +69,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
|
||||
|
||||
private static final boolean DEFAULT_ROOTED = true;
|
||||
private static final int DEFAULT_UPD_HISTORY = 14;
|
||||
private static final boolean DEFAULT_PRIVILEGED_INSTALLER = false;
|
||||
private static final boolean DEFAULT_PRIVILEGED_INSTALLER = 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 boolean DEFAULT_UNSTABLE_UPDATES = false;
|
||||
@ -113,14 +113,18 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
|
||||
initialized.put(key, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* of the Privileged Extension. The preference provides a way to disable using the
|
||||
* Privileged Extension even though its installed.
|
||||
*
|
||||
* @see org.fdroid.fdroid.views.fragments.PreferencesFragment#initPrivilegedInstallerPreference()
|
||||
*/
|
||||
public boolean isPrivilegedInstallerEnabled() {
|
||||
return preferences.getBoolean(PREF_PRIVILEGED_INSTALLER, DEFAULT_PRIVILEGED_INSTALLER);
|
||||
}
|
||||
|
||||
public void setPrivilegedInstallerEnabled(boolean enable) {
|
||||
preferences.edit().putBoolean(PREF_PRIVILEGED_INSTALLER, enable).apply();
|
||||
}
|
||||
|
||||
public boolean isPostPrivilegedInstall() {
|
||||
return preferences.getBoolean(PREF_POST_PRIVILEGED_INSTALL, DEFAULT_POST_PRIVILEGED_INSTALL);
|
||||
}
|
||||
|
@ -34,7 +34,6 @@ import android.view.ContextThemeWrapper;
|
||||
|
||||
import org.fdroid.fdroid.FDroid;
|
||||
import org.fdroid.fdroid.FDroidApp;
|
||||
import org.fdroid.fdroid.Preferences;
|
||||
import org.fdroid.fdroid.R;
|
||||
import org.fdroid.fdroid.installer.PrivilegedInstaller;
|
||||
|
||||
@ -233,9 +232,6 @@ public class InstallExtensionDialogActivity extends FragmentActivity {
|
||||
title = getString(R.string.system_install_post_success);
|
||||
message = getString(R.string.system_install_post_success_message);
|
||||
result = Activity.RESULT_OK;
|
||||
|
||||
// enable system installer on installation success
|
||||
Preferences.get().setPrivilegedInstallerEnabled(true);
|
||||
break;
|
||||
case PrivilegedInstaller.IS_EXTENSION_INSTALLED_NO:
|
||||
title = getString(R.string.system_install_post_fail);
|
||||
|
@ -1,17 +1,16 @@
|
||||
package org.fdroid.fdroid.views.fragments;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceCategory;
|
||||
import android.support.v4.preference.PreferenceFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.text.Html;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import org.fdroid.fdroid.AppDetails;
|
||||
@ -50,6 +49,7 @@ public class PreferencesFragment extends PreferenceFragment
|
||||
private static final int REQUEST_INSTALL_ORBOT = 0x1234;
|
||||
private CheckBoxPreference enableProxyCheckPref;
|
||||
private CheckBoxPreference useTorCheckPref;
|
||||
private Preference updatePrivilegedExtensionPref;
|
||||
private long currentKeepCacheTime;
|
||||
|
||||
@Override
|
||||
@ -58,6 +58,7 @@ public class PreferencesFragment extends PreferenceFragment
|
||||
addPreferencesFromResource(R.xml.preferences);
|
||||
useTorCheckPref = (CheckBoxPreference) findPreference(Preferences.PREF_USE_TOR);
|
||||
enableProxyCheckPref = (CheckBoxPreference) findPreference(Preferences.PREF_ENABLE_PROXY);
|
||||
updatePrivilegedExtensionPref = findPreference(Preferences.PREF_UNINSTALL_PRIVILEGED_APP);
|
||||
}
|
||||
|
||||
private void checkSummary(String key, int resId) {
|
||||
@ -192,79 +193,39 @@ public class PreferencesFragment extends PreferenceFragment
|
||||
* Initializes SystemInstaller preference, which can only be enabled when F-Droid is installed as a system-app
|
||||
*/
|
||||
private void initPrivilegedInstallerPreference() {
|
||||
CheckBoxPreference pref = (CheckBoxPreference) findPreference(Preferences.PREF_PRIVILEGED_INSTALLER);
|
||||
|
||||
// we are handling persistence ourself!
|
||||
pref.setPersistent(false);
|
||||
final CheckBoxPreference pref = (CheckBoxPreference) findPreference(Preferences.PREF_PRIVILEGED_INSTALLER);
|
||||
Preferences p = Preferences.get();
|
||||
boolean enabled = p.isPrivilegedInstallerEnabled();
|
||||
boolean installed = PrivilegedInstaller.isExtensionInstalledCorrectly(getActivity())
|
||||
== PrivilegedInstaller.IS_EXTENSION_INSTALLED_YES;
|
||||
pref.setEnabled(installed);
|
||||
pref.setDefaultValue(installed);
|
||||
pref.setChecked(enabled && installed);
|
||||
|
||||
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
final CheckBoxPreference pref = (CheckBoxPreference) preference;
|
||||
|
||||
SharedPreferences.Editor editor = pref.getSharedPreferences().edit();
|
||||
if (pref.isChecked()) {
|
||||
int isInstalledCorrectly =
|
||||
PrivilegedInstaller.isExtensionInstalledCorrectly(getActivity());
|
||||
if (isInstalledCorrectly == PrivilegedInstaller.IS_EXTENSION_INSTALLED_YES) {
|
||||
// privileged permission are granted, i.e. the extension is installed correctly
|
||||
SharedPreferences.Editor editor = pref.getSharedPreferences().edit();
|
||||
editor.putBoolean(Preferences.PREF_PRIVILEGED_INSTALLER, true);
|
||||
editor.apply();
|
||||
pref.setChecked(true);
|
||||
editor.remove(Preferences.PREF_PRIVILEGED_INSTALLER);
|
||||
} else {
|
||||
// privileged permission not available
|
||||
SharedPreferences.Editor editor = pref.getSharedPreferences().edit();
|
||||
editor.putBoolean(Preferences.PREF_PRIVILEGED_INSTALLER, false);
|
||||
}
|
||||
editor.apply();
|
||||
pref.setChecked(false);
|
||||
|
||||
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity());
|
||||
alertBuilder.setTitle(R.string.system_install_denied_title);
|
||||
|
||||
String message;
|
||||
switch (isInstalledCorrectly) {
|
||||
case PrivilegedInstaller.IS_EXTENSION_INSTALLED_NO:
|
||||
message = getActivity().getString(R.string.system_install_denied_body) +
|
||||
"<br/><br/>" + getActivity().getString(R.string.system_install_question);
|
||||
break;
|
||||
case PrivilegedInstaller.IS_EXTENSION_INSTALLED_SIGNATURE_PROBLEM:
|
||||
message = getActivity().getString(R.string.system_install_denied_signature);
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("unhandled return");
|
||||
}
|
||||
alertBuilder.setMessage(Html.fromHtml(message));
|
||||
alertBuilder.setPositiveButton(R.string.system_install_button_open, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
// Open details of F-Droid Privileged
|
||||
Intent intent = new Intent(getActivity(), AppDetails.class);
|
||||
intent.putExtra(AppDetails.EXTRA_APPID,
|
||||
PrivilegedInstaller.PRIVILEGED_EXTENSION_PACKAGE_NAME);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
alertBuilder.setNegativeButton(R.string.cancel, null);
|
||||
alertBuilder.create().show();
|
||||
}
|
||||
} else {
|
||||
SharedPreferences.Editor editor = pref.getSharedPreferences().edit();
|
||||
editor.putBoolean(Preferences.PREF_PRIVILEGED_INSTALLER, false);
|
||||
editor.apply();
|
||||
pref.setChecked(false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initManagePrivilegedAppPreference() {
|
||||
Preference pref = findPreference(Preferences.PREF_UNINSTALL_PRIVILEGED_APP);
|
||||
pref.setPersistent(false);
|
||||
|
||||
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
private void initUpdatePrivilegedExtensionPreference() {
|
||||
if (Build.VERSION.SDK_INT > 19) {
|
||||
// this will never work on newer Android versions, so hide it
|
||||
PreferenceCategory other = (PreferenceCategory) findPreference("pref_category_other");
|
||||
other.removePreference(updatePrivilegedExtensionPref);
|
||||
return;
|
||||
}
|
||||
updatePrivilegedExtensionPref.setPersistent(false);
|
||||
updatePrivilegedExtensionPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
@ -292,7 +253,7 @@ public class PreferencesFragment extends PreferenceFragment
|
||||
currentKeepCacheTime = Preferences.get().getKeepCacheTime();
|
||||
|
||||
initPrivilegedInstallerPreference();
|
||||
initManagePrivilegedAppPreference();
|
||||
initUpdatePrivilegedExtensionPreference();
|
||||
// this pref's default is dynamically set based on whether Orbot is installed
|
||||
boolean useTor = Preferences.get().isTorEnabled();
|
||||
useTorCheckPref.setDefaultValue(useTor);
|
||||
|
@ -72,7 +72,8 @@
|
||||
android:summary="@string/proxy_port_summary"
|
||||
android:dependency="enableProxy" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/other">
|
||||
<PreferenceCategory android:title="@string/other"
|
||||
android:key="pref_category_other">
|
||||
<ListPreference android:title="@string/cache_downloaded"
|
||||
android:key="keepCacheFor"
|
||||
android:defaultValue="86400000"
|
||||
@ -90,6 +91,7 @@
|
||||
<CheckBoxPreference android:title="@string/system_installer"
|
||||
android:defaultValue="false"
|
||||
android:key="privilegedInstaller"
|
||||
android:persistent="false"
|
||||
android:dependency="expert" />
|
||||
<Preference android:title="@string/uninstall_system"
|
||||
android:summary="@string/uninstall_system_summary"
|
||||
|
Loading…
x
Reference in New Issue
Block a user