From 8d99de59fca10e527fe4d9f15f54fd860d3e9dc1 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Mon, 20 Feb 2017 22:59:42 +0100 Subject: [PATCH 1/6] Fix crash on Android < 12 --- src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java b/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java index 0e83fd7c..fc2042e0 100644 --- a/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java +++ b/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java @@ -34,6 +34,7 @@ import android.content.res.Resources; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Build; import android.preference.PreferenceManager; import android.provider.MediaStore; import android.support.v4.app.NotificationCompat; @@ -207,7 +208,7 @@ public class SharePlugin extends Plugin { NotificationHelper.notifyCompat(notificationManager, notificationId, builder.build()); if (successful) { - if (!customDestination) { + if (!customDestination && Build.VERSION.SDK_INT >= 12) { Log.i("SharePlugin","Adding to downloads"); DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); manager.addCompletedDownload(destinationUri.getLastPathSegment(), device.getName(), true, mimeType, destinationUri.getPath(), fileLength, false); @@ -228,7 +229,7 @@ public class SharePlugin extends Plugin { Log.i("SharePlugin", "hasText"); String text = np.getString("text"); - if(android.os.Build.VERSION.SDK_INT >= 11) { + if(Build.VERSION.SDK_INT >= 11) { ClipboardManager cm = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); cm.setText(text); } else { From b4b7b58cb2474bdbd04878fe40213de9b5a78f12 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 21 Feb 2017 13:33:16 +0100 Subject: [PATCH 2/6] GIT_SILENT made messages (after extraction) --- res/values-nl/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 66b62869..a35bb72e 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -165,6 +165,7 @@ Hernoemen Verversen Dit gepaarde apparaat is niet bereikbaar. Ga na dat het is verbonden met uw zelfde netwerk. + Het lijkt of op een mobiele gegevensverbinding zit. KDE Connect werkt alleen op locale netwerken. Er zijn geen bestandsbrowsers geïnstalleerd. SMS verzenden Stuur tekstberichten van uw bureaublad From a172430c1177785d73e545c5412caaaaf3b06d44 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Thu, 23 Feb 2017 07:12:52 +0100 Subject: [PATCH 3/6] GIT_SILENT made messages (after extraction) --- res/values-cs/strings.xml | 3 ++- res/values-nl/strings.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 506fcb12..f5944c9b 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -22,7 +22,7 @@ Zpřístupněte si upozornění z jiných zařízení Přijímat oznámení Přijímat oznámení z jiného zařízení a zobrazovat je v Androidu - Sdílet s přijmnout + Sdílet a přijmout Sdílet soubory a odkazy mezi zařízeními Tato vlastnost není pro vaši verzi Androidu platná Žádná zařízení @@ -165,6 +165,7 @@ Přejmenovat Obnovit Toto spárované zařízení je nedosažitelné. Ujistěte se, že běží ve stejné síti. + Vypadá to, že jste na mobilním internetovém připojení. KDE Connect funguje pouze na lokální síti. Není nainstalován žádný prohlížeč souborů. Poslat SMS Posílejte zprávy ze své pracovní plochy diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index a35bb72e..ef92ae6c 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -67,7 +67,7 @@ Nieuw apparaat paren Onbekend apparaat Apparaat niet bereikbaar - Paar maken is al gevraagd + Paarvorming is al gevraagd Apparaat is al gepaard Kon pakket niet verzenden Tijdslimiet overschreden From 3ea5d43b9973b2a55a5bb4c0c1b83ffb8728458c Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 25 Feb 2017 21:05:23 +0100 Subject: [PATCH 4/6] Revert "Do not broadcast in 3G + info message" As it couldn't be any other way, this broke somebody's workflow. This reverts commit 440a12f86c8db63cc3a85d3a4e05c3e62eb31f19. --- res/layout/activity_device.xml | 15 +-------------- res/values/strings.xml | 1 - .../Backends/LanBackend/LanLinkProvider.java | 6 ------ src/org/kde/kdeconnect/BackgroundService.java | 2 +- .../kde/kdeconnect/Helpers/NetworkHelper.java | 16 ---------------- .../kdeconnect/KdeConnectBroadcastReceiver.java | 1 - .../kdeconnect/UserInterface/DeviceFragment.java | 5 +---- .../UserInterface/PairingFragment.java | 13 ++++--------- 8 files changed, 7 insertions(+), 52 deletions(-) delete mode 100644 src/org/kde/kdeconnect/Helpers/NetworkHelper.java diff --git a/res/layout/activity_device.xml b/res/layout/activity_device.xml index 43028053..9bb47993 100644 --- a/res/layout/activity_device.xml +++ b/res/layout/activity_device.xml @@ -70,7 +70,7 @@ - - Rename Refresh This paired device is not reachable. Make sure it is connected to your same network. - It looks like you are on a mobile data connection. KDE Connect only works on local networks. There are no file browsers installed. Send SMS Send text messages from your desktop diff --git a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java index 867ce6db..f6f0583e 100644 --- a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java +++ b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java @@ -31,7 +31,6 @@ import org.kde.kdeconnect.Backends.BaseLinkProvider; import org.kde.kdeconnect.BackgroundService; import org.kde.kdeconnect.Device; import org.kde.kdeconnect.Helpers.DeviceHelper; -import org.kde.kdeconnect.Helpers.NetworkHelper; import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper; import org.kde.kdeconnect.Helpers.StringsHelper; import org.kde.kdeconnect.NetworkPackage; @@ -363,11 +362,6 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis private void broadcastUdpPackage() { - if (NetworkHelper.isOnMobileNetwork(context)) { - Log.w("LanLinkProvider", "On 3G network, not sending broadcast."); - return; - } - new Thread(new Runnable() { @Override public void run() { diff --git a/src/org/kde/kdeconnect/BackgroundService.java b/src/org/kde/kdeconnect/BackgroundService.java index ca6c2cca..7b5ef04a 100644 --- a/src/org/kde/kdeconnect/BackgroundService.java +++ b/src/org/kde/kdeconnect/BackgroundService.java @@ -119,7 +119,7 @@ public class BackgroundService extends Service { } }; - public void onDeviceListChanged() { + private void onDeviceListChanged() { for(DeviceListChangedCallback callback : deviceListChangedCallbacks.values()) { callback.onDeviceListChanged(); } diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java deleted file mode 100644 index 0f6d17cd..00000000 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.kde.kdeconnect.Helpers; - -import android.content.Context; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.util.Log; - -public class NetworkHelper { - - public static boolean isOnMobileNetwork(Context context) { - final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo info = connMgr.getActiveNetworkInfo(); - return (info != null && info.getType() == ConnectivityManager.TYPE_MOBILE); - } - -} diff --git a/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java b/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java index 2cb73f34..e43afbab 100644 --- a/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java +++ b/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java @@ -67,7 +67,6 @@ public class KdeConnectBroadcastReceiver extends BroadcastReceiver BackgroundService.RunCommand(context, new BackgroundService.InstanceCallback() { @Override public void onServiceStart(BackgroundService service) { - service.onDeviceListChanged(); service.onNetworkChange(); } }); diff --git a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java index 820e8deb..f3a7cde3 100644 --- a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java @@ -40,7 +40,6 @@ import android.widget.TextView; import org.kde.kdeconnect.BackgroundService; import org.kde.kdeconnect.Device; -import org.kde.kdeconnect.Helpers.NetworkHelper; import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper; import org.kde.kdeconnect.Plugins.Plugin; import org.kde.kdeconnect.UserInterface.List.CustomItem; @@ -334,11 +333,9 @@ public class DeviceFragment extends Fragment { boolean paired = device.isPaired(); boolean reachable = device.isReachable(); - boolean onData = NetworkHelper.isOnMobileNetwork(getContext()); rootView.findViewById(R.id.pairing_buttons).setVisibility(paired ? View.GONE : View.VISIBLE); - rootView.findViewById(R.id.not_reachable_message).setVisibility((paired && !reachable && !onData) ? View.VISIBLE : View.GONE); - rootView.findViewById(R.id.on_data_message).setVisibility((paired && !reachable && onData) ? View.VISIBLE : View.GONE); + rootView.findViewById(R.id.unpair_message).setVisibility((paired && !reachable) ? View.VISIBLE : View.GONE); try { ArrayList items = new ArrayList<>(); diff --git a/src/org/kde/kdeconnect/UserInterface/PairingFragment.java b/src/org/kde/kdeconnect/UserInterface/PairingFragment.java index c5fe6225..ecf65b0a 100644 --- a/src/org/kde/kdeconnect/UserInterface/PairingFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/PairingFragment.java @@ -36,7 +36,6 @@ import android.widget.TextView; import org.kde.kdeconnect.BackgroundService; import org.kde.kdeconnect.Device; -import org.kde.kdeconnect.Helpers.NetworkHelper; import org.kde.kdeconnect.UserInterface.List.ListAdapter; import org.kde.kdeconnect.UserInterface.List.PairingDeviceItem; import org.kde.kdeconnect.UserInterface.List.SectionItem; @@ -61,8 +60,6 @@ public class PairingFragment extends Fragment implements PairingDeviceItem.Callb boolean listRefreshCalledThisFrame = false; - TextView headerText; - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -77,10 +74,10 @@ public class PairingFragment extends Fragment implements PairingDeviceItem.Callb rootView = inflater.inflate(R.layout.activity_list, container, false); - headerText = new TextView(inflater.getContext()); - headerText.setText(getString(R.string.pairing_description)); - headerText.setPadding(0, (int) (16 * getResources().getDisplayMetrics().density), 0, (int) (12 * getResources().getDisplayMetrics().density)); - ((ListView) rootView).addHeaderView(headerText); + TextView text = new TextView(inflater.getContext()); + text.setText(getString(R.string.pairing_description)); + text.setPadding(0, (int) (16 * getResources().getDisplayMetrics().density), 0, (int) (12 * getResources().getDisplayMetrics().density)); + ((ListView) rootView).addHeaderView(text); return rootView; } @@ -107,8 +104,6 @@ public class PairingFragment extends Fragment implements PairingDeviceItem.Callb } listRefreshCalledThisFrame = true; - headerText.setText(getString(NetworkHelper.isOnMobileNetwork(getContext()) ? R.string.on_data_message : R.string.pairing_description)); - try { Collection devices = service.getDevices().values(); final ArrayList items = new ArrayList<>(); From 48f5566326b1196bb2d5af9060e6cdd918607884 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 25 Feb 2017 21:12:32 +0100 Subject: [PATCH 5/6] Try a different approach to detect when on mobile data. --- res/layout/activity_device.xml | 15 ++++++++++- res/values/strings.xml | 1 + .../Backends/LanBackend/LanLinkProvider.java | 6 +++++ src/org/kde/kdeconnect/BackgroundService.java | 2 +- .../kde/kdeconnect/Helpers/NetworkHelper.java | 26 +++++++++++++++++++ .../KdeConnectBroadcastReceiver.java | 1 + .../UserInterface/DeviceFragment.java | 5 +++- .../UserInterface/PairingFragment.java | 13 +++++++--- 8 files changed, 62 insertions(+), 7 deletions(-) create mode 100644 src/org/kde/kdeconnect/Helpers/NetworkHelper.java diff --git a/res/layout/activity_device.xml b/res/layout/activity_device.xml index 9bb47993..43028053 100644 --- a/res/layout/activity_device.xml +++ b/res/layout/activity_device.xml @@ -70,7 +70,7 @@ + + Rename Refresh This paired device is not reachable. Make sure it is connected to your same network. + It looks like you are on a mobile data connection. KDE Connect only works on local networks. There are no file browsers installed. Send SMS Send text messages from your desktop diff --git a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java index f6f0583e..867ce6db 100644 --- a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java +++ b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java @@ -31,6 +31,7 @@ import org.kde.kdeconnect.Backends.BaseLinkProvider; import org.kde.kdeconnect.BackgroundService; import org.kde.kdeconnect.Device; import org.kde.kdeconnect.Helpers.DeviceHelper; +import org.kde.kdeconnect.Helpers.NetworkHelper; import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper; import org.kde.kdeconnect.Helpers.StringsHelper; import org.kde.kdeconnect.NetworkPackage; @@ -362,6 +363,11 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis private void broadcastUdpPackage() { + if (NetworkHelper.isOnMobileNetwork(context)) { + Log.w("LanLinkProvider", "On 3G network, not sending broadcast."); + return; + } + new Thread(new Runnable() { @Override public void run() { diff --git a/src/org/kde/kdeconnect/BackgroundService.java b/src/org/kde/kdeconnect/BackgroundService.java index 7b5ef04a..ca6c2cca 100644 --- a/src/org/kde/kdeconnect/BackgroundService.java +++ b/src/org/kde/kdeconnect/BackgroundService.java @@ -119,7 +119,7 @@ public class BackgroundService extends Service { } }; - private void onDeviceListChanged() { + public void onDeviceListChanged() { for(DeviceListChangedCallback callback : deviceListChangedCallbacks.values()) { callback.onDeviceListChanged(); } diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java new file mode 100644 index 00000000..8212e06b --- /dev/null +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -0,0 +1,26 @@ +package org.kde.kdeconnect.Helpers; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkInfo; + +public class NetworkHelper { + + public static boolean isOnMobileNetwork(Context context) { + if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { + return false; //No good way to know it + } + final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + Network[] networks = connMgr.getAllNetworks(); + for (Network network : networks) { + NetworkInfo info = connMgr.getNetworkInfo(network); + if (info.getType() == ConnectivityManager.TYPE_MOBILE) { + continue; + } + if (info.isConnected()) return false; //We are connected to at least one non-mobile network + } + return true; + } + +} diff --git a/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java b/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java index e43afbab..2cb73f34 100644 --- a/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java +++ b/src/org/kde/kdeconnect/KdeConnectBroadcastReceiver.java @@ -67,6 +67,7 @@ public class KdeConnectBroadcastReceiver extends BroadcastReceiver BackgroundService.RunCommand(context, new BackgroundService.InstanceCallback() { @Override public void onServiceStart(BackgroundService service) { + service.onDeviceListChanged(); service.onNetworkChange(); } }); diff --git a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java index f3a7cde3..820e8deb 100644 --- a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java @@ -40,6 +40,7 @@ import android.widget.TextView; import org.kde.kdeconnect.BackgroundService; import org.kde.kdeconnect.Device; +import org.kde.kdeconnect.Helpers.NetworkHelper; import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper; import org.kde.kdeconnect.Plugins.Plugin; import org.kde.kdeconnect.UserInterface.List.CustomItem; @@ -333,9 +334,11 @@ public class DeviceFragment extends Fragment { boolean paired = device.isPaired(); boolean reachable = device.isReachable(); + boolean onData = NetworkHelper.isOnMobileNetwork(getContext()); rootView.findViewById(R.id.pairing_buttons).setVisibility(paired ? View.GONE : View.VISIBLE); - rootView.findViewById(R.id.unpair_message).setVisibility((paired && !reachable) ? View.VISIBLE : View.GONE); + rootView.findViewById(R.id.not_reachable_message).setVisibility((paired && !reachable && !onData) ? View.VISIBLE : View.GONE); + rootView.findViewById(R.id.on_data_message).setVisibility((paired && !reachable && onData) ? View.VISIBLE : View.GONE); try { ArrayList items = new ArrayList<>(); diff --git a/src/org/kde/kdeconnect/UserInterface/PairingFragment.java b/src/org/kde/kdeconnect/UserInterface/PairingFragment.java index ecf65b0a..c5fe6225 100644 --- a/src/org/kde/kdeconnect/UserInterface/PairingFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/PairingFragment.java @@ -36,6 +36,7 @@ import android.widget.TextView; import org.kde.kdeconnect.BackgroundService; import org.kde.kdeconnect.Device; +import org.kde.kdeconnect.Helpers.NetworkHelper; import org.kde.kdeconnect.UserInterface.List.ListAdapter; import org.kde.kdeconnect.UserInterface.List.PairingDeviceItem; import org.kde.kdeconnect.UserInterface.List.SectionItem; @@ -60,6 +61,8 @@ public class PairingFragment extends Fragment implements PairingDeviceItem.Callb boolean listRefreshCalledThisFrame = false; + TextView headerText; + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -74,10 +77,10 @@ public class PairingFragment extends Fragment implements PairingDeviceItem.Callb rootView = inflater.inflate(R.layout.activity_list, container, false); - TextView text = new TextView(inflater.getContext()); - text.setText(getString(R.string.pairing_description)); - text.setPadding(0, (int) (16 * getResources().getDisplayMetrics().density), 0, (int) (12 * getResources().getDisplayMetrics().density)); - ((ListView) rootView).addHeaderView(text); + headerText = new TextView(inflater.getContext()); + headerText.setText(getString(R.string.pairing_description)); + headerText.setPadding(0, (int) (16 * getResources().getDisplayMetrics().density), 0, (int) (12 * getResources().getDisplayMetrics().density)); + ((ListView) rootView).addHeaderView(headerText); return rootView; } @@ -104,6 +107,8 @@ public class PairingFragment extends Fragment implements PairingDeviceItem.Callb } listRefreshCalledThisFrame = true; + headerText.setText(getString(NetworkHelper.isOnMobileNetwork(getContext()) ? R.string.on_data_message : R.string.pairing_description)); + try { Collection devices = service.getDevices().values(); final ArrayList items = new ArrayList<>(); From 9580154a13e4de3c98bcd7da93a20beba1f50ae6 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 25 Feb 2017 21:32:28 +0100 Subject: [PATCH 6/6] Bumped version to release --- AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index d4bcf729..04944770 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="1620" + android:versionName="1.6.2">