diff --git a/app/src/main/java/eu/faircode/netguard/ActivitySettings.java b/app/src/main/java/eu/faircode/netguard/ActivitySettings.java
index f22968db..a40ffaed 100644
--- a/app/src/main/java/eu/faircode/netguard/ActivitySettings.java
+++ b/app/src/main/java/eu/faircode/netguard/ActivitySettings.java
@@ -357,6 +357,32 @@ public boolean onPreferenceClick(Preference preference) {
});
}
+ Preference pref_exclude_all = screen.findPreference("exclude_all_tracking");
+ if (pref_exclude_all != null) {
+ pref_exclude_all.setOnPreferenceClickListener(preference -> {
+ Util.areYouSure(ActivitySettings.this, R.string.summary_exclude_all_tracking, new Util.DoubtListener() {
+ @Override
+ public void onSure() {
+ setTrackerProtectionForAll(false);
+ }
+ });
+ return true;
+ });
+ }
+
+ Preference pref_include_all = screen.findPreference("include_all_tracking");
+ if (pref_include_all != null) {
+ pref_include_all.setOnPreferenceClickListener(preference -> {
+ Util.areYouSure(ActivitySettings.this, R.string.summary_include_all_tracking, new Util.DoubtListener() {
+ @Override
+ public void onSure() {
+ setTrackerProtectionForAll(true);
+ }
+ });
+ return true;
+ });
+ }
+
if (pref_rcode != null && cat_advanced != null) {
pref_rcode.setTitle(getString(R.string.setting_rcode, prefs.getString("rcode", "3")));
cat_advanced.removePreference(pref_rcode);
@@ -393,12 +419,6 @@ public boolean onPreferenceClick(Preference preference) {
if (p != null) p.setEnabled(false);
}
- // In minimal mode, hide domain_based_blocking (not used)
- if (BlockingMode.isMinimalMode(this) && cat_advanced != null) {
- Preference domainBlocking = cat_advanced.findPreference("domain_based_blocking");
- if (domainBlocking != null) cat_advanced.removePreference(domainBlocking);
- }
-
String last_download = prefs.getString("hosts_last_download", null);
if (pref_hosts_download != null) {
if (last_download != null)
@@ -841,6 +861,17 @@ else if (BlockingMode.MODE_STRICT.equals(mode))
pref.setSummary(R.string.summary_blocking_mode_standard);
}
+ private void setTrackerProtectionForAll(boolean enabled) {
+ SharedPreferences tracker_protect = getSharedPreferences("tracker_protect", Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = tracker_protect.edit();
+
+ for (android.content.pm.PackageInfo pkg : Rule.getPackages(this))
+ editor.putBoolean(pkg.packageName, enabled);
+
+ editor.apply();
+ ServiceSinkhole.reload("bulk tracker protect changed", this, false);
+ }
+
@TargetApi(Build.VERSION_CODES.M)
private boolean checkPermissions(String name) {
PreferenceScreen screen = getPreferenceScreen();
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 81adc7c9..cf189a11 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -102,6 +102,10 @@
Track network usage
Reset network usage
Show resolved domain names
+ Exclude all apps from tracking
+ Disable tracker monitoring for all apps. You can then re-enable it for individual apps.
+ Include all apps in tracking
+ Re-enable tracker monitoring for all apps.
Enable hosts file
Hosts blocking response: %s
VPN IPv4: %s
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index b5d1dfb6..799d698b 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -112,6 +112,14 @@
android:key="manage_system"
android:summary="@string/summary_system"
android:title="@string/setting_system" />
+
+