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" /> + +