diff --git a/res/values/strings.xml b/res/values/strings.xml
index e0cd348f..4f160d39 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -547,4 +547,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
Plugin stats
+ Enable backwards-compatible device discovery
+
diff --git a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java
index 555fd76f..9db86346 100644
--- a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java
+++ b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java
@@ -24,6 +24,7 @@ import org.kde.kdeconnect.Helpers.TrustedNetworkHelper;
import org.kde.kdeconnect.KdeConnect;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.UserInterface.CustomDevicesActivity;
+import org.kde.kdeconnect.UserInterface.SettingsFragment;
import java.io.BufferedReader;
import java.io.IOException;
@@ -331,6 +332,12 @@ public class LanLinkProvider extends BaseLinkProvider {
}
private void broadcastUdpIdentityPacket() {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ if (!preferences.getBoolean(SettingsFragment.KEY_UDP_BROADCAST_ENABLED, true)) {
+ Log.i("LanLinkProvider", "UDP broadcast is disabled in settings. Skipping.");
+ return;
+ }
+
if (System.currentTimeMillis() < lastBroadcast + delayBetweenBroadcasts) {
Log.i("LanLinkProvider", "broadcastUdpPacket: relax cowboy");
return;
diff --git a/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java b/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java
index e3e8fd1b..a0c5f215 100644
--- a/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java
+++ b/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java
@@ -37,6 +37,9 @@ import org.kde.kdeconnect_tp.R;
public class SettingsFragment extends PreferenceFragmentCompat {
+ public static final String KEY_UDP_BROADCAST_ENABLED = "udp_broadcast_enabled";
+ public static final String KEY_APP_THEME = "theme_pref";
+
private EditTextPreference renameDevice;
@NonNull
@@ -90,7 +93,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
// Theme Selector
ListPreference themeSelector = new ListPreference(context);
- themeSelector.setKey("theme_pref");
+ themeSelector.setKey(KEY_APP_THEME);
themeSelector.setTitle(R.string.theme_dialog_title);
themeSelector.setDialogTitle(R.string.theme_dialog_title);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -168,6 +171,13 @@ public class SettingsFragment extends PreferenceFragmentCompat {
return true;
});
+ // UDP broadcast toggle
+ final TwoStatePreference udpBroadcastDiscovery = new SwitchPreference(context);
+ udpBroadcastDiscovery.setPersistent(false);
+ udpBroadcastDiscovery.setDefaultValue(true);
+ udpBroadcastDiscovery.setKey(KEY_UDP_BROADCAST_ENABLED);
+ udpBroadcastDiscovery.setTitle(R.string.enable_udp_broadcast);
+ screen.addPreference(udpBroadcastDiscovery);
// More settings text
Preference moreSettingsText = new Preference(context);