From c93e4400e2613c28ffefab2f2ac3a1fbdf02a42d Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 25 Feb 2017 21:41:55 +0100 Subject: [PATCH 01/36] Fix crash when fragment.getContext() was null --- AndroidManifest.xml | 2 +- src/org/kde/kdeconnect/Helpers/NetworkHelper.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 04944770..1f007954 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,7 +1,7 @@ Date: Tue, 28 Feb 2017 21:21:31 +0100 Subject: [PATCH 02/36] Further refining the network detection --- src/org/kde/kdeconnect/Helpers/NetworkHelper.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java index 75f05b91..f6d37425 100644 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -4,6 +4,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkInfo; +import android.util.Log; public class NetworkHelper { @@ -11,16 +12,19 @@ public class NetworkHelper { if (context == null || android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { return false; //No good way to know it } + boolean mobile = false; 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) { + mobile = info.isConnected(); continue; } - if (info.isConnected()) return false; //We are connected to at least one non-mobile network + Log.e(info.getTypeName(),""+info.isAvailable()); + if (info.isAvailable()) return false; //We are connected to at least one non-mobile network } - return true; + return mobile; } } From a94e082b6834bc66d2ca9369ecd8c0f960bdbdbe Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 1 Mar 2017 06:45:54 +0100 Subject: [PATCH 03/36] GIT_SILENT made messages (after extraction) --- res/values-it/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index d902d6b7..c3298781 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -165,6 +165,7 @@ Rinomina Aggiorna Questo dispositivo associato non è raggiungibile. Assicurati che sia connesso alla tua stessa rete. + Sembra che tu stia utilizzando una connessione dati mobile. KDE Connect funziona solo su reti locali. Non ci sono navigatori di file installati. Invia SMS Invia messaggi di testo dal tuo desktop From ba440bd5ea58e588350897649e017b6b6d480143 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 4 Mar 2017 07:13:18 +0100 Subject: [PATCH 04/36] GIT_SILENT made messages (after extraction) --- res/values-pl/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index d939294f..5e6630c0 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -10,6 +10,8 @@ Udostępnij zawartość schowka Zdalne sterowanie Użyj swojego telefonu lub tabletu jako myszy i klawiatury + Odbieraj zdalne naciśnięcia klawiszy + Odbieraj naciśnięcia klawiszy od urządzeń zdalnych Sterowanie multimediami Zapewnia zdalne sterowanie twoim odtwarzaczem multimedialnym Wykonaj polecenie @@ -30,6 +32,10 @@ Musisz przydzielić uprawnienia, aby uzyskać dostęp do powiadomień Wyślij ping Sterowanie multimediami + Obsługuj zdalne naciśnięcia klawiszy tylko podczas edycji + Nie istnieje połączenie zdalnej klawiatury, nawiąż takie połączenie w kdeconnect + Połączenie zdalnej klawiatury jest nawiązane + Nawiązano więcej niż jedno połączenie zdalnej klawiatury, wybierz urządzenie do ustawienia Zdalne sterowanie Przesuń palcem po ekranie, aby przesunąć wskaźnik myszy. Stuknij, aby wywołać naciśniecie lewym przyciskiem myszy i użyj dwóch/trzech palców, aby wywołać naciśniecie prawym i środkowym przyciskiem myszy. Przyciśnij na dłużej, aby przeciągnąć i upuścić. Ustaw działanie po dwukrotnym stuknięciu palcem From 05ba2188de1669cadb3d06b41f2241c2b281e2c5 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 5 Mar 2017 08:01:12 +0100 Subject: [PATCH 05/36] GIT_SILENT made messages (after extraction) --- res/values-da/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index e1a3712e..ca665a25 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -10,6 +10,8 @@ Del indholdet af udklipsholderen Eksternt input Brug din telefon eller tablet som mus og tastatur + Modtag eksterne tastetryk + Modtag tastetryk-hændelser fra eksterne enheder Multimediekontroller Giver en fjernbetjening til din medieafspiller Kør kommando @@ -30,6 +32,10 @@ Du skal give tilladelse for at tilgå bekendtgørelser Send ping Multimediekontrol + Håndtér kun eksterne tastetryk under redigering + Der er ingen aktiv ekstern tastaturforbindelse. Opret en i kdeconnect + Ekstern tastaturforbindelse er aktiv + Der er mere end en ekstern tastaturforbindelse, vælg den enhed der skal konfigureres Eksternt input Bevæg en finger på skærmen for at flytte musemarkøren. Tap for at klikke og brug to/tre-fingre for højre og midterste museknap. Brug et langt tryk til at trække og slippe. Angiv handling for tap med to fingre @@ -152,6 +158,7 @@ Omdøb Genopfrisk Denne parrede enhed kan ikke nås. Sørg for at den er forbundet til samme netværk som dig. + Det lader til at du er på en mobil dataforbindelse. KDE Connect virker kun på lokale netværk. Der er ingen filhåndtering installeret. Send SMS Send SMS-beskeder fra din desktop From 1f8f39a7f8b1ac751702e594254c128f1dd72e72 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Thu, 9 Mar 2017 06:56:51 +0100 Subject: [PATCH 06/36] GIT_SILENT made messages (after extraction) --- res/values-es/strings.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 6aa2534f..1240e079 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -10,6 +10,8 @@ Compartir el contenido del portapapeles Entrada remota Usar su teléfono o tableta como teclado y teclado táctil + Recibir pulsaciones de teclas remotas + Reciba eventos de pulsación de teclas desde dispositivos remotos Controles multimedia Proporciona un control remoto para su reproductor de medios Ejecutar orden @@ -30,6 +32,10 @@ Debe otorgar permiso para acceder a las notificaciones Enviar ping Control multimedia + Manejar teclas remotas solo al editar + No hay ninguna conexión remota de teclado activa, establezca una en kdeconnect + La conexión remota de teclado está activa + Hay más de una conexión remota de teclado, seleccione el dispositivo a configurar Entrada remota Mueva un dedo sobre la pantalla para mover el cursor del ratón. Pulse para ejecutar un clic y use dos/tres dedos para emular los botones derecho y central. Use una pulsación larga para arrastrar y soltar. Establecer la acción al pulsar con dos dedos @@ -153,12 +159,13 @@ %1$s en %2$s Enviar archivos Dispositivos de KDE Connect - Otros dispositivos ejecutando KDE Connect en su misma red deberían aparecer aquí. + Cualquier otro dispositivo ejecutando KDE Connect en su misma red debería aparecer aquí. Dispositivo vinculado Renombrar dispositivo Renombrar Actualizar Este dispositivo vinculado no está disponible. Asegúrese que está conectado a su misma red. + Parece que se encuentra en una conexión de datos móviles. KDE Connect solo funciona en redes locales. No hay navegadores de archivos instalados. Enviar SMS Enviar mensajes de texto desde el escritorio From 86d0d3065c52c645373971e9b43180958d3e0430 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 14 Mar 2017 19:05:45 +0100 Subject: [PATCH 07/36] GIT_SILENT made messages (after extraction) --- res/values-de/strings.xml | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 67062450..bd7d7587 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -9,8 +9,9 @@ Abgleich der Zwischenablage Inhalt der Zwischenablage freigeben Ferneingabe - Verwendet Ihr Handy als Tablett, Touchpad und Tastatur + Verwendet Ihr Handy als Tablet, Touchpad und Tastatur Multimedia-Bedienung + Eine Fernbedienung für Ihre Medienwiedergabe Befehl ausführen Von Ihrem Telefon oder Tablett Befehle auf anderen Geräten ausführen Ping @@ -18,6 +19,7 @@ Benachrichtigungs-Abgleich Zugriff auf Ihre Benachrichtigungen von anderen Geräten Benachrichtigungen empfangen + Empfangen und Anzeigen von Benachrichtigungen des anderen Geräts Veröffentlichen und Empfangen Dateien und Adressen (URLs) zwischen Geräten teilen Diese Funktion ist in Ihrer Android-Version nicht verfügbar @@ -29,6 +31,7 @@ Ping senden Multimedia-Bedienung Ferneingabe + Bewegen Sie einen Finger auf dem Bildschirm um den Maus-Zeiger zu verschieben. Tippen zum Klicken, mit zwei oder drei Fingern für rechten bzw. mittleren Mausknopf. Tippen und Halten für Ziehen und Ablegen. Aktionsausführung bei Berührung mit zwei Fingern einstellen Aktionsausführung bei Berührung mit drei Fingern einstellen Empfindlichkeit des Touchpads einstellen @@ -43,9 +46,9 @@ Standard Langsamste - Above Slowest + Langsam Standard - Above Default + Schnell Schnellste Verbundene Geräte @@ -66,19 +69,25 @@ Abbruch durch Gegenstelle Ungültiger Schlüssel empfangen Verschlüsselungsinformationen + Das andere Gerät verwendet eine ältere Version von KDE-Connect, eine veraltete Verschlüsselungsmethode wird verwendet. Der SHA1-Fingerabdruck Ihres Gerätezertifikats lautet: Der SHA1-Fingerabdruck des Gerätezertifikats der Gegenstelle lautet: Verbindung angefordert Verbindungsanfrage von %1s Verknüpfung von %1s erhalten + Tippen um „%1s“ zu öffnen Eingehende Datei von %1s %1s Datei wird an %1s gesendet + Datei wird an %1s gesendet %1s + %1$d von %2$d Dateien gesendet Datei von %1s erhalten Der Empfang der Datei %1s ist fehlgeschlagen + Tippen um „%1s“ zu öffnen Datei an %1s gesendet %1s + Das Senden der Datei an %1s ist fehlgeschlagen %1s Tippen zum Antworten Erneut verbinden @@ -101,6 +110,7 @@ Lautstärke Multimedia-Einstellungen Knöpfe Vorwärts/Rückwärts + Sprungweite für Vorlauf/Rücklauf anpassen. 10 Sekunden 20 Sekunden @@ -121,9 +131,13 @@ Benutzerdefinierte Geräteliste Ein neues Gerät verbinden Verbindung %s trennen - Geräte nach IP hinzufügen + Geräte nach IP-Adresse hinzufügen Ausführliche Benachrichtigungen Beim Empfang einer Datei vibrieren und einen Sound abspielen + Zielverzeichnis anpassen + Empfangene Dateien werden in Downloads gespeichert + Dateien werden im folgenden Verzeichnis gespeichert + Zielverzeichnis Benachrichtigungs-Filter Benachrichtigungen werden zwischen den ausgewählten Anwendungen abgeglichen. Interner Speicher @@ -132,17 +146,19 @@ SD-Karte (Nur lesen) Kamerabilder - Rechner/IP hinzufügen - Rechnername oder IP + Rechner/IP-Adresse hinzufügen + Rechnername oder IP-Adresse Keine Medienspieler gefunden + Benutzen Sie diese Funktion nur, wenn Ihr Gerät nicht automatisch erkannt wird. Geben hier Sie IP-Adresse oder Hostnamen ein und bestätigen Sie, um es zu der Liste hinzuzufügen. Tippen Sie ein bestehendes Gerät an, um es aus der Liste zu entfernen. %1$s auf %2$s Dateien senden KDE-Connect-Geräte - Andere Geräte, auf denen KDE-Connect läuft im gleichen Netzwerk,sollte hier angezeigt werden. + Andere Geräte im selben Netzwerk, auf denen KDE-Connect läuft, sollten hier angezeigt werden. Gerät verbunden Geräte umbenennen Umbenennen Aktualisieren + Das verbundene Gerät ist nicht erreichbar. Stellen Sie sicher daß es mit demselben Netzwerk verbunden ist. Es sind keine Dateiverwaltungsprogramme installiert. SMS senden Text-Nachrichten von Ihrer Arbeitsfläche senden From 0dd26e572920c84367a352fb352f3253030f299a Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 26 Apr 2017 00:48:54 +0200 Subject: [PATCH 08/36] Removed an if to check for access to "/" as it never helped --- .../Plugins/SftpPlugin/SftpPlugin.java | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/src/org/kde/kdeconnect/Plugins/SftpPlugin/SftpPlugin.java b/src/org/kde/kdeconnect/Plugins/SftpPlugin/SftpPlugin.java index 6842c00a..59d33f63 100644 --- a/src/org/kde/kdeconnect/Plugins/SftpPlugin/SftpPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/SftpPlugin/SftpPlugin.java @@ -75,50 +75,48 @@ public class SftpPlugin extends Plugin { //Kept for compatibility, in case "multiPaths" is not possible or the other end does not support it np2.set("path", Environment.getExternalStorageDirectory().getAbsolutePath()); - File root = new File("/"); - if (root.canExecute() && root.canRead()) { - List storageList = StorageHelper.getStorageList(); - ArrayList paths = new ArrayList<>(); - ArrayList pathNames = new ArrayList<>(); + List storageList = StorageHelper.getStorageList(); + ArrayList paths = new ArrayList<>(); + ArrayList pathNames = new ArrayList<>(); - for (StorageHelper.StorageInfo storage : storageList) { - paths.add(storage.path); - StringBuilder res = new StringBuilder(); + for (StorageHelper.StorageInfo storage : storageList) { + paths.add(storage.path); + StringBuilder res = new StringBuilder(); - if (storageList.size() > 1) { - if (!storage.removable) { - res.append(context.getString(R.string.sftp_internal_storage)); - } else if (storage.number > 1) { - res.append(context.getString(R.string.sftp_sdcard_num, storage.number)); - } else { - res.append(context.getString(R.string.sftp_sdcard)); - } + if (storageList.size() > 1) { + if (!storage.removable) { + res.append(context.getString(R.string.sftp_internal_storage)); + } else if (storage.number > 1) { + res.append(context.getString(R.string.sftp_sdcard_num, storage.number)); } else { - res.append(context.getString(R.string.sftp_all_files)); + res.append(context.getString(R.string.sftp_sdcard)); } - String pathName = res.toString(); - if (storage.readonly) { - res.append(" "); - res.append(context.getString(R.string.sftp_readonly)); - } - pathNames.add(res.toString()); + } else { + res.append(context.getString(R.string.sftp_all_files)); + } + String pathName = res.toString(); + if (storage.readonly) { + res.append(" "); + res.append(context.getString(R.string.sftp_readonly)); + } + pathNames.add(res.toString()); - //Shortcut for users that only want to browse camera pictures - String dcim = storage.path + "/DCIM/Camera"; - if (new File(dcim).exists()) { - paths.add(dcim); - if (storageList.size() > 1) { - pathNames.add(context.getString(R.string.sftp_camera) + "(" + pathName + ")"); - } else { - pathNames.add(context.getString(R.string.sftp_camera)); - } + //Shortcut for users that only want to browse camera pictures + String dcim = storage.path + "/DCIM/Camera"; + if (new File(dcim).exists()) { + paths.add(dcim); + if (storageList.size() > 1) { + pathNames.add(context.getString(R.string.sftp_camera) + "(" + pathName + ")"); + } else { + pathNames.add(context.getString(R.string.sftp_camera)); } } + } + + if (paths.size() > 0) { + np2.set("multiPaths", paths); + np2.set("pathNames", pathNames); - if (paths.size() > 0) { - np2.set("multiPaths", paths); - np2.set("pathNames", pathNames); - } } device.sendPackage(np2); From c39620e33c059a3d0496b8e45abd9a1ec2899ff3 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 18 Mar 2017 02:12:22 +0100 Subject: [PATCH 09/36] Update gradle plugin --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index aa0fcb03..8804a319 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.3' + classpath 'com.android.tools.build:gradle:2.3.0' } } From cc4a1963345088cc6f149eede9b732a0ae0d805d Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 6 May 2017 12:46:52 +0200 Subject: [PATCH 10/36] Make android version check lint happy --- src/org/kde/kdeconnect/Helpers/NetworkHelper.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java index f6d37425..0b6e9b86 100644 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -9,7 +9,10 @@ import android.util.Log; public class NetworkHelper { public static boolean isOnMobileNetwork(Context context) { - if (context == null || android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { + if (context == null) { + return false; + } + if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { return false; //No good way to know it } boolean mobile = false; From 9e6a4938ed2f1179bfc7cc4184bc6456555834fa Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 6 May 2017 12:47:15 +0200 Subject: [PATCH 11/36] Added an extra check to be really sure we are on data. --- .../kde/kdeconnect/Helpers/NetworkHelper.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java index 0b6e9b86..d190be1f 100644 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -6,6 +6,9 @@ import android.net.Network; import android.net.NetworkInfo; import android.util.Log; +import java.io.FileReader; +import java.io.LineNumberReader; + public class NetworkHelper { public static boolean isOnMobileNetwork(Context context) { @@ -27,7 +30,21 @@ public class NetworkHelper { Log.e(info.getTypeName(),""+info.isAvailable()); if (info.isAvailable()) return false; //We are connected to at least one non-mobile network } - return mobile; + if (mobile) { //We suspect we are on a mobile net + try { + //Check the number of network neighbours, on data it should be 0 + LineNumberReader is = new LineNumberReader(new FileReader("/proc/net/arp")); + is.skip(Long.MAX_VALUE); + //Log.e("NetworkHelper", "procnetarp has " + is.getLineNumber() + " lines"); + if (is.getLineNumber() > 1) { //The first line are the headers + return false; //I have neighbours, so this doesn't look like a mobile network + } + } catch (Exception e) { + Log.e("NetworkHelper", "Exception reading procnetarp"); + e.printStackTrace(); + } + } + return false; } } From 2d49715891be696bf902653788cbb3e9bed5316f Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 6 May 2017 12:47:51 +0200 Subject: [PATCH 12/36] Removed print --- src/org/kde/kdeconnect/Helpers/NetworkHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java index d190be1f..c4abd1df 100644 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -27,7 +27,7 @@ public class NetworkHelper { mobile = info.isConnected(); continue; } - Log.e(info.getTypeName(),""+info.isAvailable()); + //Log.e(info.getTypeName(),""+info.isAvailable()); if (info.isAvailable()) return false; //We are connected to at least one non-mobile network } if (mobile) { //We suspect we are on a mobile net From 9d1734406b5d1c42a4a5b43221468a969f3c457b Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 6 May 2017 12:54:06 +0200 Subject: [PATCH 13/36] Bumped version number to release --- AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 1f007954..98065108 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,7 +1,7 @@ Date: Sat, 6 May 2017 14:26:37 +0200 Subject: [PATCH 14/36] Made getLocalIpAddress ignore rmnet-related interfaces. Any interface with "rmnet" in it is an internal interface that has to do with the device's cellular connection or USB tethering. Since those interfaces might give IPv4 addresses that are unreachable from any other device, this change makes getLocalIpAddress ignore anything rmnet-related. BUG: 337685 --- .../Plugins/SftpPlugin/SimpleSftpServer.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java b/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java index 67b5a73b..c2801a23 100644 --- a/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java +++ b/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java @@ -144,6 +144,17 @@ class SimpleSftpServer { try { for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); + + // Anything with rmnet is related to cellular connections or USB + // tethering mechanisms. See: + // + // https://android.googlesource.com/kernel/msm/+/android-msm-flo-3.4-kitkat-mr1/Documentation/usb/gadget_rmnet.txt + // + // If we run across an interface that has this, we can safely + // ignore it. In fact, it's much safer to do. If we don't, we + // might get invalid IP adddresses out of it. + if(intf.getDisplayName().contains("rmnet")) continue; + for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { From a81eba9ea16a9fbdb6428c97fd4de672ac7cf91a Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Sat, 6 May 2017 14:29:24 +0200 Subject: [PATCH 15/36] Bumped version number to release --- AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 98065108..c2583528 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,7 +1,7 @@ Date: Mon, 15 May 2017 05:02:35 +0200 Subject: [PATCH 16/36] GIT_SILENT made messages (after extraction) --- res/values-ru/strings.xml | 49 ++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 84d54db9..fd7a5b89 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -5,15 +5,23 @@ Состояние батареи Периодическое информирование о состоянии батареи Просмотр файловой системы + Позволяет удалённо просматривать файловую систему устройства Синхронизация буфера обмена Использование общего буфера обмена Удалённый ввод + Использование телефона или планшета в качестве сенсорной панели и клавиатуры + Получение удалённых нажатий клавиш + Получение нажатий клавиш с удалённых устройств Управление воспроизведением + Обеспечивает дистанционное управление медиапроигрывателем Запуск команд + Удалённый запуск команд с телефона или планшета Пинг Отправка и получение тестовых сигналов Синхронизация уведомлений Доступ к уведомлениям с других устройств + Получение уведомлений + Получение уведомлений с другого устройства и показ их на Android Отправка и приём данных Пересылка файлов и адресов URL между устройствами Эта функциональность недоступна в вашей версии Android @@ -24,10 +32,16 @@ Нужно разрешить доступ к уведомлениям Отправить тестовый сигнал Управление воспроизведением + Обрабатывать удалённые нажатия только при редактировании + Нет активного соединения с удалённой клавиатурой, установите его в KDE Connect + Соединение с удалённой клавиатурой активно + Подключено более одной удалённой клавиатуры, выберите устройство для настройки Удалённый ввод Перемещайте палец по экрану для перемещения курсора мыши. Коснитесь для нажатия, используйте два/три пальца для правой и средней кнопок. Используйте долгое нажатие для перетаскивания. Действие при нажатии двумя пальцами Действие при нажатии тремя пальцами + Чувствительность сенсорной панели + Инвертировать направление прокрутки Нажатие правой кнопки Нажатие средней кнопки @@ -35,12 +49,13 @@ Нажатие правой кнопки Нажатие средней кнопки + Обычная - Slowest - Above Slowest - Default - Above Default - Fastest + Самая низкая + Низкая + Обычная + Высокая + Самая высокая Подключённые устройства Доступные устройства @@ -49,15 +64,20 @@ Настройка модулей Снять сопряжение Сопряжённое устройство недоступно + Подключить новое устройство Неизвестное устройство Устройство недоступно Запрос на сопряжение уже был сделан Устройство уже сопряжено - Не удалось отправить пакет. + Не удалось отправить пакет Истекло время ожидания Отменено пользователем Отменено другим участником Получен недопустимый ключ + Информация о шифровании + На другом устройстве используется старая версия KDE Connect, используется старый метод шифрования. + Отпечаток SHA-1 сертификата вашего устройства: + Отпечаток SHA-1 сертификата удалённого устройства: Запрошено сопряжение Запрос на сопряжение от %1s Получена ссылка от %1s @@ -65,12 +85,15 @@ Входящий файл с %1s %1s Отправка файла на %1s + Отправка файлов на %1s %1s + Отправлено %1$d из %2$d файлов Получен файл с %1s Не удалось получить файл с %1s Нажмите, чтобы открыть «%1s» Файл отправлен на %1s %1s + Не удалось отправить файл на %1s %1s Нажмите, чтобы ответить Подключить заново @@ -102,8 +125,8 @@ 2 минуты Отправить на... - Это устройство использует старую версию протокола. - Это устройство использует более новую версию протокола. + Это устройство использует старую версию протокола + Это устройство использует более новую версию протокола Общие параметры Настройка Настройка %s @@ -116,7 +139,11 @@ Снять сопряжение с %s Добавить устройства по IP Звуковые уведомления - Использовать звуковой сигнал и вибрацию при получении файла. + Использовать вибрацию и звуковой сигнал при получении файла + Задать целевой каталог + Полученные файлы появятся в каталоге Загрузки + Файлы будут сохранены в указанном ниже каталоге + Целевой каталог Фильтр уведомлений Уведомления будут синхронизированы для выбранных приложений. Встроенная память @@ -138,10 +165,14 @@ Переименовать Обновить Это сопряжённое устройство недоступно. Проверьте, что оно подключено к той же локальной сети. + Похоже, вы подключены к мобильной сети. KDE Connect работает только в локальных сетях. Не удалось открыть диалог выбора файла. Отправка SMS Отправка SMS-сообщений с вашего компьютера Этот модуль не поддерживается устройством + Поиск телефона + Поиск планшета + Подача звукового сигнала на устройстве, чтобы вы могли его найти Найден Открыть Закрыть From 9a5b03c423aa651c7058871c5fc360a0523e463f Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Tue, 16 May 2017 20:57:06 +0200 Subject: [PATCH 17/36] Fixing crash, apparently info can be null (?) --- src/org/kde/kdeconnect/Helpers/NetworkHelper.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java index c4abd1df..d0bf7618 100644 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -23,6 +23,9 @@ public class NetworkHelper { Network[] networks = connMgr.getAllNetworks(); for (Network network : networks) { NetworkInfo info = connMgr.getNetworkInfo(network); + if (info == null) { + continue; + } if (info.getType() == ConnectivityManager.TYPE_MOBILE) { mobile = info.isConnected(); continue; From 2d35b0471359c61489836f8391f53b7ab59fb906 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Tue, 16 May 2017 21:01:34 +0200 Subject: [PATCH 18/36] Fix IllegalStateException: Fragment not attached to Activity BUG: 379873 --- src/org/kde/kdeconnect/UserInterface/PairingFragment.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/org/kde/kdeconnect/UserInterface/PairingFragment.java b/src/org/kde/kdeconnect/UserInterface/PairingFragment.java index c5fe6225..b848baf7 100644 --- a/src/org/kde/kdeconnect/UserInterface/PairingFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/PairingFragment.java @@ -99,6 +99,11 @@ public class PairingFragment extends Fragment implements PairingDeviceItem.Callb @Override public void run() { + if (!isAdded()) { + //Fragment is not attached to an activity. We will crash if we try to do anything here. + return; + } + if (listRefreshCalledThisFrame) { // This makes sure we don't try to call list.getFirstVisiblePosition() // twice per frame, because the second time the list hasn't been drawn From 3f188b5526ba036c615d3b5ab547d32ab3f626bf Mon Sep 17 00:00:00 2001 From: Simon Redman Date: Tue, 16 May 2017 21:02:16 +0200 Subject: [PATCH 19/36] Add support for sending and receiving multipart SMSes Summary: The SMS protocol does not support sending a message longer than 160 characters. Android's SmsManager.sendTextMessage(..) fails to send in case the message is too long. Instead of failing, check the message length. If it is longer than 160 characters, break it up and send it as several messages On receive, collect the list of messages, then combine their bodies Test Plan: Send a long message via KDE Connect and verify that it is actually sent Send a short message via KDE Connect and verify that it can also be sent Ideally: Test sending a message which is the maximum length for an SMS (160 characters) and verify that it is sent as exactly one SMS (And billed properly) Receive a long message and verify that it is delivered as a single long message, even though we all know that it was transmitted as a multi-part SMS Receive a short message and verify that it is correctly delivered Reviewers: #kde_connect, albertvaka Reviewed By: #kde_connect, albertvaka Subscribers: albertvaka Differential Revision: https://phabricator.kde.org/D5848 --- .../TelepathyPlugin/TelepathyPlugin.java | 10 +++++- .../TelephonyPlugin/TelephonyPlugin.java | 33 ++++++++++++++++--- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java b/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java index 3ebf282f..67a5ce86 100644 --- a/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java @@ -23,6 +23,8 @@ package org.kde.kdeconnect.Plugins.TelepathyPlugin; import android.telephony.SmsManager; import android.util.Log; +import java.util.ArrayList; + import org.kde.kdeconnect.NetworkPackage; import org.kde.kdeconnect.Plugins.Plugin; import org.kde.kdeconnect.Plugins.TelephonyPlugin.TelephonyPlugin; @@ -64,7 +66,13 @@ public class TelepathyPlugin extends Plugin { String sms = np.getString("messageBody"); try { SmsManager smsManager = SmsManager.getDefault(); - smsManager.sendTextMessage(phoneNo, null, sms, null, null); + + ArrayList parts = smsManager.divideMessage(sms); + + // If this message turns out to fit in a single SMS, sendMultpartTextMessage + // properly handles that case + smsManager.sendMultipartTextMessage(phoneNo, null, parts, null, null); + //TODO: Notify other end } catch (Exception e) { //TODO: Notify other end diff --git a/src/org/kde/kdeconnect/Plugins/TelephonyPlugin/TelephonyPlugin.java b/src/org/kde/kdeconnect/Plugins/TelephonyPlugin/TelephonyPlugin.java index 40cbd0b1..27d3af74 100644 --- a/src/org/kde/kdeconnect/Plugins/TelephonyPlugin/TelephonyPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/TelephonyPlugin/TelephonyPlugin.java @@ -34,8 +34,10 @@ import android.util.Log; import org.kde.kdeconnect.Helpers.ContactsHelper; import org.kde.kdeconnect.NetworkPackage; import org.kde.kdeconnect.Plugins.Plugin; +import org.kde.kdeconnect_tp.BuildConfig; import org.kde.kdeconnect_tp.R; +import java.util.ArrayList; import java.util.Map; import java.util.Timer; import java.util.TimerTask; @@ -72,11 +74,19 @@ public class TelephonyPlugin extends Plugin { final Bundle bundle = intent.getExtras(); if (bundle == null) return; final Object[] pdus = (Object[]) bundle.get("pdus"); + ArrayList messages = new ArrayList(); + for (Object pdu : pdus) { - SmsMessage message = SmsMessage.createFromPdu((byte[])pdu); - smsBroadcastReceived(message); + // I hope, but am not sure, that the pdus array is in the order that the parts + // of the SMS message should be + // If it is not, I belive the pdu contains the information necessary to put it + // in order, but in my testing the order seems to be correct, so I won't worry + // about it now. + messages.add(SmsMessage.createFromPdu((byte[])pdu)); } + smsBroadcastReceived(messages); + } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) { String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); @@ -194,7 +204,14 @@ public class TelephonyPlugin extends Plugin { lastState = state; } - private void smsBroadcastReceived(SmsMessage message) { + private void smsBroadcastReceived(ArrayList messages) { + + if (BuildConfig.DEBUG) { + if (!(messages.size() > 0)) + { + throw new AssertionError("This method requires at least one message"); + } + } //Log.e("SmsBroadcastReceived", message.toString()); @@ -202,12 +219,18 @@ public class TelephonyPlugin extends Plugin { np.set("event","sms"); - String messageBody = message.getMessageBody(); + String messageBody = new String(); + + for (int index = 0; index < messages.size(); index ++) + { + messageBody += messages.get(index).getMessageBody(); + } + if (messageBody != null) { np.set("messageBody",messageBody); } - String phoneNumber = message.getOriginatingAddress(); + String phoneNumber = messages.get(0).getOriginatingAddress(); Map contactInfo = ContactsHelper.phoneNumberLookup(context, phoneNumber); if (phoneNumber != null) { np.set("phoneNumber", phoneNumber); From 23648a03e5df78c6aad7f3c5aa0ff5c76d176041 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Tue, 16 May 2017 21:05:17 +0200 Subject: [PATCH 20/36] Bumped version to release --- AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c2583528..2d5ad843 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="1630" + android:versionName="1.6.3"> From 40c9b670330eb2ecfc7786b5dc6d3e4ac0444041 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 17 May 2017 23:13:33 +0200 Subject: [PATCH 21/36] Fixing sent SMS not appearing in the SMS app on old phones BUG: 368069 --- AndroidManifest.xml | 1 + .../Plugins/TelepathyPlugin/TelepathyPlugin.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 2d5ad843..7142f7b3 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -24,6 +24,7 @@ + diff --git a/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java b/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java index 67a5ce86..bd454fef 100644 --- a/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java @@ -20,6 +20,9 @@ package org.kde.kdeconnect.Plugins.TelepathyPlugin; +import android.content.ContentValues; +import android.net.Uri; +import android.provider.Telephony; import android.telephony.SmsManager; import android.util.Log; @@ -73,6 +76,11 @@ public class TelepathyPlugin extends Plugin { // properly handles that case smsManager.sendMultipartTextMessage(phoneNo, null, parts, null, null); + ContentValues values = new ContentValues(); + values.put("address", phoneNo); + values.put("body", sms); + context.getContentResolver().insert(Uri.parse("content://sms/sent"), values); + //TODO: Notify other end } catch (Exception e) { //TODO: Notify other end From 62cab267b4ba5d903a9a89873a55b22bcfaa869c Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 17 May 2017 23:13:43 +0200 Subject: [PATCH 22/36] Bumped gradle version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8804a319..d94cc94c 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.0' + classpath 'com.android.tools.build:gradle:2.3.2' } } From e68925c85240db0fd104e2fe87e7b2e4a02ca185 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 17 May 2017 23:14:21 +0200 Subject: [PATCH 23/36] Bumped version to release in Beta --- AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7142f7b3..347c1bdc 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="1635" + android:versionName="1.6.4 Beta"> From 7ad141bb6d84a4f4205b45855d64a0cea7ed1757 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Tue, 23 May 2017 23:00:31 +0200 Subject: [PATCH 24/36] Revert "Fixing sent SMS not appearing in the SMS app on old phones" Doesn't seem to actually work. This reverts commit 40c9b670330eb2ecfc7786b5dc6d3e4ac0444041. --- AndroidManifest.xml | 1 - .../Plugins/TelepathyPlugin/TelepathyPlugin.java | 8 -------- 2 files changed, 9 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 347c1bdc..b0e74d59 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -24,7 +24,6 @@ - diff --git a/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java b/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java index bd454fef..67a5ce86 100644 --- a/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/TelepathyPlugin/TelepathyPlugin.java @@ -20,9 +20,6 @@ package org.kde.kdeconnect.Plugins.TelepathyPlugin; -import android.content.ContentValues; -import android.net.Uri; -import android.provider.Telephony; import android.telephony.SmsManager; import android.util.Log; @@ -76,11 +73,6 @@ public class TelepathyPlugin extends Plugin { // properly handles that case smsManager.sendMultipartTextMessage(phoneNo, null, parts, null, null); - ContentValues values = new ContentValues(); - values.put("address", phoneNo); - values.put("body", sms); - context.getContentResolver().insert(Uri.parse("content://sms/sent"), values); - //TODO: Notify other end } catch (Exception e) { //TODO: Notify other end From 23d54eaedfb00f61048afd9e18e758f625a9dc11 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 24 May 2017 00:11:43 +0200 Subject: [PATCH 25/36] Fix crash on Android 5.1 when calling registerReceiver(null) Plus small optimization by re-using the NetworkPackage. --- .../Plugins/BatteryPlugin/BatteryPlugin.java | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/org/kde/kdeconnect/Plugins/BatteryPlugin/BatteryPlugin.java b/src/org/kde/kdeconnect/Plugins/BatteryPlugin/BatteryPlugin.java index 142b4dfe..b4f1697d 100644 --- a/src/org/kde/kdeconnect/Plugins/BatteryPlugin/BatteryPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/BatteryPlugin/BatteryPlugin.java @@ -40,7 +40,7 @@ public class BatteryPlugin extends Plugin { private static final int THRESHOLD_EVENT_NONE= 0; private static final int THRESHOLD_EVENT_BATTERY_LOW = 1; - private NetworkPackage lastInfo = null; + private NetworkPackage batteryInfo = new NetworkPackage(PACKAGE_TYPE_BATTERY); @Override public String getDisplayName() { @@ -56,18 +56,18 @@ public class BatteryPlugin extends Plugin { @Override public void onReceive(Context context, Intent batteryIntent) { - Intent batteryChargeIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - int level = batteryChargeIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); - int scale = batteryChargeIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 1); - int currentCharge = level*100 / scale; - boolean isCharging = (0 != batteryChargeIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0)); + int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); + int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 1); + int plugged = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); + + int currentCharge = (level == -1)? batteryInfo.getInt("currentCharge") : level*100 / scale; + boolean isCharging = (plugged == -1)? batteryInfo.getBoolean("isCharging") : (0 != plugged); boolean lowBattery = Intent.ACTION_BATTERY_LOW.equals(batteryIntent.getAction()); int thresholdEvent = lowBattery? THRESHOLD_EVENT_BATTERY_LOW : THRESHOLD_EVENT_NONE; - if (lastInfo != null - && isCharging == lastInfo.getBoolean("isCharging") - && currentCharge == lastInfo.getInt("currentCharge") - && thresholdEvent == lastInfo.getInt("thresholdEvent") + if (isCharging == batteryInfo.getBoolean("isCharging") + && currentCharge == batteryInfo.getInt("currentCharge") + && thresholdEvent == batteryInfo.getInt("thresholdEvent") ) { //Do not send again if nothing has changed @@ -75,12 +75,10 @@ public class BatteryPlugin extends Plugin { } else { - NetworkPackage np = new NetworkPackage(PACKAGE_TYPE_BATTERY); - np.set("currentCharge", currentCharge); - np.set("isCharging", isCharging); - np.set("thresholdEvent", thresholdEvent); - device.sendPackage(np); - lastInfo = np; + batteryInfo.set("currentCharge", currentCharge); + batteryInfo.set("isCharging", isCharging); + batteryInfo.set("thresholdEvent", thresholdEvent); + device.sendPackage(batteryInfo); } @@ -89,8 +87,10 @@ public class BatteryPlugin extends Plugin { @Override public boolean onCreate() { - context.registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - context.registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_LOW)); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); + intentFilter.addAction(Intent.ACTION_BATTERY_LOW); + context.registerReceiver(receiver, intentFilter); return true; } @@ -104,9 +104,7 @@ public class BatteryPlugin extends Plugin { public boolean onPackageReceived(NetworkPackage np) { if (np.getBoolean("request")) { - if (lastInfo != null) { - device.sendPackage(lastInfo); - } + device.sendPackage(batteryInfo); } return true; From 7c02f79c2261994526b48141681e9751c15192df Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 24 May 2017 00:21:45 +0200 Subject: [PATCH 26/36] Attempt to fix NPE --- src/org/kde/kdeconnect/UserInterface/DeviceFragment.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java index 820e8deb..56d2c8b8 100644 --- a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java @@ -458,6 +458,10 @@ public class DeviceFragment extends Fragment { BackgroundService.RunCommand(activity, new BackgroundService.InstanceCallback() { public void onServiceStart(BackgroundService service) { Device dev = service.getDevice(devId); + if (dev == null) { + Log.w("rejectPairing", "Device no longer exists: "+devId); + return; + } activity.getSupportActionBar().setTitle(dev.getName()); dev.addPairingCallback(frag.pairingCallback); @@ -477,6 +481,10 @@ public class DeviceFragment extends Fragment { BackgroundService.RunCommand(activity, new BackgroundService.InstanceCallback() { public void onServiceStart(BackgroundService service) { Device dev = service.getDevice(devId); + if (dev == null) { + Log.w("rejectPairing", "Device no longer exists: "+devId); + return; + } activity.getSupportActionBar().setTitle(dev.getName()); dev.addPairingCallback(frag.pairingCallback); From 82b42fda67d53ab96d12bcb8d39471e5507d3b67 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 24 May 2017 00:23:57 +0200 Subject: [PATCH 27/36] Fix NPE --- .../Plugins/NotificationsPlugin/NotificationsPlugin.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/org/kde/kdeconnect/Plugins/NotificationsPlugin/NotificationsPlugin.java b/src/org/kde/kdeconnect/Plugins/NotificationsPlugin/NotificationsPlugin.java index e983bc4f..740cb2c5 100644 --- a/src/org/kde/kdeconnect/Plugins/NotificationsPlugin/NotificationsPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/NotificationsPlugin/NotificationsPlugin.java @@ -120,6 +120,10 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver. @Override public void onNotificationRemoved(StatusBarNotification statusBarNotification) { + if (statusBarNotification == null) { + Log.w("onNotificationRemoved", "notification is null"); + return; + } String id = getNotificationKeyCompat(statusBarNotification); NetworkPackage np = new NetworkPackage(PACKAGE_TYPE_NOTIFICATION); np.set("id", id); From 124a971a1f1140eaf4773d053e5c3f4c742adbe1 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 24 May 2017 00:29:33 +0200 Subject: [PATCH 28/36] Never crash if there is a problem in isOnMobileNetwork --- .../kde/kdeconnect/Helpers/NetworkHelper.java | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java index d0bf7618..27825970 100644 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -18,34 +18,39 @@ public class NetworkHelper { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { return false; //No good way to know it } - boolean mobile = false; - final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - Network[] networks = connMgr.getAllNetworks(); - for (Network network : networks) { - NetworkInfo info = connMgr.getNetworkInfo(network); - if (info == null) { - continue; - } - if (info.getType() == ConnectivityManager.TYPE_MOBILE) { - mobile = info.isConnected(); - continue; - } - //Log.e(info.getTypeName(),""+info.isAvailable()); - if (info.isAvailable()) return false; //We are connected to at least one non-mobile network - } - if (mobile) { //We suspect we are on a mobile net - try { - //Check the number of network neighbours, on data it should be 0 - LineNumberReader is = new LineNumberReader(new FileReader("/proc/net/arp")); - is.skip(Long.MAX_VALUE); - //Log.e("NetworkHelper", "procnetarp has " + is.getLineNumber() + " lines"); - if (is.getLineNumber() > 1) { //The first line are the headers - return false; //I have neighbours, so this doesn't look like a mobile network + try { + boolean mobile = false; + final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + Network[] networks = connMgr.getAllNetworks(); + for (Network network : networks) { + NetworkInfo info = connMgr.getNetworkInfo(network); + if (info == null) { + continue; } - } catch (Exception e) { - Log.e("NetworkHelper", "Exception reading procnetarp"); - e.printStackTrace(); + if (info.getType() == ConnectivityManager.TYPE_MOBILE) { + mobile = info.isConnected(); + continue; + } + //Log.e(info.getTypeName(),""+info.isAvailable()); + if (info.isAvailable()) return false; //We are connected to at least one non-mobile network } + if (mobile) { //We suspect we are on a mobile net + try { + //Check the number of network neighbours, on data it should be 0 + LineNumberReader is = new LineNumberReader(new FileReader("/proc/net/arp")); + is.skip(Long.MAX_VALUE); + //Log.e("NetworkHelper", "procnetarp has " + is.getLineNumber() + " lines"); + if (is.getLineNumber() > 1) { //The first line are the headers + return false; //I have neighbours, so this doesn't look like a mobile network + } + } catch (Exception e) { + Log.e("NetworkHelper", "Exception reading procnetarp"); + e.printStackTrace(); + } + } + } catch(Exception e) { + e.printStackTrace(); + Log.d("isOnMobileNetwork", "Something went wrong, but this is non-critical."); } return false; } From cea712ced98ffa576c9c2cd9838fc4558c711841 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 24 May 2017 00:29:41 +0200 Subject: [PATCH 29/36] Bumped version for release --- AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b0e74d59..5bd322e9 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="1640" + android:versionName="1.6.4"> From b9a366df09f4a6ed360cc79c044839b4b8a3033a Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 27 May 2017 04:52:01 +0200 Subject: [PATCH 30/36] GIT_SILENT Add new file (after extraction) --- res/values-sr/strings.xml | 178 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 res/values-sr/strings.xml diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml new file mode 100644 index 00000000..e551a350 --- /dev/null +++ b/res/values-sr/strings.xml @@ -0,0 +1,178 @@ + + + Обавештења телефона + Шаље обавештења за СМС и позиве + Извештај о батерији + Периодично извештава о стању батерије + Приступ фајл систему + Дозвољава даљински приступ фајл систему уређаја + Усклађени клипборд + Дељење садржаја клипборда + Даљински унос + Користите телефон или таблет као додирник и тастатуру + Пријем даљинских тастера + Примање тастерских догађаја са удаљених уређаја + Управљање мултимедијом + Омогућава даљинско управљање медија плејером + Извршавање наредбе + Даљински окида наредбе са телефона или таблета + Пинг + Шаље и прима пингове + Усклађена обавештења + Приступа вашим обавештењима са другог уређаја + Пријем обавештења + Прима обавештења са других уређаја и приказује их на Андроиду + Дели и примај + Дели фајлове и УРЛ‑ове између уређаја + Ова могућност није доступна на вашој верзији Андроида + Нема уређаја + У реду + Откажи + Отвори поставке + Морате дати дозволу за приступ обавештењима + Пошаљи пинг + Контрола мултимедије + Користи даљинске дугмиће само при уређивању + Нема активне везе даљинске тастатуре. Успоставите је у КДЕ‑конекцији + Веза даљинске тастатуре је активна + Постоји више од једне везе даљинске тастатуре. Изаберите уређај да бисте подесили + Даљински унос + Померајте прст по екрану да бисте померали показивач миша. Тапните за клик или користите два/три прста за десни или средњи клик. Задржите за превуци и пусти. + Радња за додир са два прста + Радња за додир са три прста + Постави осетљивост додирника + Обрни смер клизања + + десни клик + средњи клик + ништа + + десни + средњи + подразумевано + + најспорије + мало спорије + подразумевано + мало брже + најбрже + + Повезани уређаји + Доступни уређаји + Упамћени уређаји + Неуспело учитавање прикључка (тапните за више информација): + Поставке прикључака + Распари + Упарени уређај није доступан + Упари нов уређај + Непознат уређај + Уређај није доступан + Упаривање је већ тражено + Уређај је већ упарен + Не могу да пошаљем пакет + Истекло је време + Корисник отказао + Отказала друга страна + Примљен је неисправан кључ + Подаци о шифровању + Друга страна не користи најновију верзију, стога се користи старији метод шифровања. + СХА‑1 отисак сертификата вашег уређаја је: + СХА‑1 отисак сертификата удаљеног уређаја је: + Упаривање је тражено + Захтев за упаривање са %1s + Примљена веза са %1s + Тапните да отворите „%1s“ + Долазни фајл са %1s + %1s + Шаљем фајл на %1s + Шаљем фајлове на %1s + %1s + Примљен фајл са %1s + Неуспео пријем фајла са %1s + Тапните да отворите „%1s“ + Послат фајл на %1s + %1s + Неуспело слање фајла на %1s + %1s + Тапните да одговорите + Поново повежи + Пошаљи десни клик + Пошаљи средњи клик + Прикажи тастатуру + Уређај није упарен + Тражи упаривање + Прихвати + Одбаци + Уређај + Упари уређај + Даљинско управљање + Поставке за КДЕ‑конекцију + Пусти + Претходно + Премотај + Брзо унапред + Следеће + Јачина + Поставке мултимедије + Напред/назад дугмад + Подесите време прескакања за напред/назад дугмад. + + 10 секунди + 20 секунди + 30 секунди + 1 минут + 2 минута + + Дели... + Овај уређај користи стару верзију протокола + Овај уређај користи новију верзију протокола + Опште поставке + Поставке + %s — поставке + Назив уређаја + %s + Неисправан назив уређаја + Примљен текст, сачуван у клипборд + Списак посебних уређаја + Упари нови уређај + Распари %s + Додај уређај по ИП адреси + Бучна обавештења + Вибрирај и пусти звук кад примаш фајл + Прилагоди одредишну фасциклу + Фајлови се смештају у Downloads + Фајлови се смештају у фасциклу испод + Одредишна фасцикла + Филтер обавештења + Обавештења ће се синхронизовати за изабране апликације. + Унутрашња меморија + сви фајлови + СД картица %d + СД картица + (само за читање) + Слике са камере + Додај домаћина/ИП + Име домаћина или ИП + Нисам нашао плејере + Користите ову опцију само ако се ваши уређаји не приказују аутоматски. Унесите ИП адресу или име домаћина и додирните дугме да га додате на листу. Додирните постојећу ставку да бисте је уклонили. + %1$s на %2$s + Пошаљи фајлове + Уређаји КДЕ‑конекције + Други уређаји на вашој мрежи на којима ради КДЕ‑конекција, појавиће се овде. + Уређај упарен + Преименовање уређаја + Преименуј + Освежи + Овај упарени уређај није доступан. Проверите да ли је повезан на исту мрежу. + Чини се да сте на мобилној мрежи. КДЕ‑конекција ради само на локалној мрежи. + Нема инсталираних прегледача фајлова. + Шаљи СМС + Шаљите текстуалне поруке помоћу рачунара + Уређај не подржава овај прикључак + Нађи мој телефон + Нађи мој таблет + Активира звоно уређаја како бисте га пронашли + Нађен + Отвори + Затвори + From 5c3607dde55edebe1c86b3e0dd5916899ba2d306 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 30 May 2017 04:50:50 +0200 Subject: [PATCH 31/36] GIT_SILENT made messages (after extraction) --- res/values-ca/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 728f9ec1..4c60746e 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -91,7 +91,7 @@ Fitxer rebut des de %1s Ha fallat en rebre el fitxer des de %1s Puntegeu per obrir «%1s» - Envia el fitxer a %1s + Fitxer enviat a %1s %1s Ha fallat en enviar el fitxer a %1s %1s From b57c22468c61b9f49173b06a77a5c39a441973c5 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 5 Jun 2017 04:40:58 +0200 Subject: [PATCH 32/36] GIT_SILENT made messages (after extraction) --- res/values-sr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index e551a350..423fac73 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -87,6 +87,7 @@ Шаљем фајл на %1s Шаљем фајлове на %1s %1s + Послато %1$d од %2$d фајлова Примљен фајл са %1s Неуспео пријем фајла са %1s Тапните да отворите „%1s“ From 70a94a7e1d3d15ada2355d6d0200af145b2aee36 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 13 Jun 2017 05:10:21 +0200 Subject: [PATCH 33/36] GIT_SILENT made messages (after extraction) --- res/values-fr/strings.xml | 77 ++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 14 deletions(-) diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index f392306e..a1097e4d 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1,18 +1,27 @@ - Notifications du téléphonie + Notifications de téléphonie Envoie des notifications pour les SMS et les appels Rapport sur la batterie Rapport périodique sur l\'état de la batterie Exposer le système de fichiers + Permettre de parcourir le système de fichiers du périphérique à distance Synchronisation avec le presse-papiers Partage le contenu du presse-papiers Contrôle distant + Utilisez votre téléphone ou tablette comme un pavé tactile et un clavier + Recevoir les appuis de touches distants + Recevoir les appuis de touches des périphériques distants Contrôles multimédia + Fournit une télécommande pour votre lecteur multimédia + Exécuter une commande + Exécuter des commandes à distance sur votre téléphone ou tablette Commande « Ping » Envoie et reçoit des commandes « Ping » Synchronisation des notifications Accédez à vos notifications depuis d\'autres périphériques + Recevoir les notifications + Recevoir les notifications du périphérique et les afficher dans Android Partager et recevoir Partagez des URLs et des fichiers entre périphériques Cette fonctionnalité n\'est pas disponible dans votre version de Android @@ -23,10 +32,16 @@ Vous devez accorder la permission d\'accéder aux notifications Envoyer un « Ping » Contrôles multimédia + Gérer les appuis de touches à distance uniquement lors de l\'édition + Aucune connexion active d\'un clavier sans fil disponible, établissez-en une dans KDE Connect + La connexion au clavier sans fil est active + Plusieurs connexions à des claviers sans fil sont disponibles, sélectionnez le périphérique à configurer Contrôle distant Déplacer le doigt sur l\'écran pour bouger le pointeur de la souris. Appuyez pour cliquer et utiliser deux/trois doigts pour les clic droit et centre. Appuyez longtemps pour faire un glisser déplacer. Action pour l\'appui à deux doigts Action pour l\'appui à trois doigts + Définir la sensibilité du pavé tactile + Inverser la direction du défilement Clic droit Clic central @@ -34,54 +49,63 @@ Droite Milieu + par défaut - Slowest - Above Slowest - Default - Above Default - Fastest + Le plus lent + Assez lent + Par défaut + Assez rapide + Le plus rapide Périphériques connectés Périphériques disponibles Périphériques mémorisés Le chargement des modules externes a échoué (cliquez pour plus d\'informations) : Paramètres du module externe - Désapparier + Dissocier Périphérique inaccessible + Associer un nouveau périphérique Périphérique inconnu Périphérique inaccessible - L\'appariement a déjà été demandé - Périphérique déjà apparié + L\'association a déjà été demandée + Périphérique déjà associé Il est impossible d\'envoyer un paquet Délai expiré Annulé par l\'utilisateur Annulé par un autre homologue Clé reçue non valable + Informations de chiffrement + Ce périphérique n\'utilise pas une version récente de KDE Connect qui utilise l\'ancienne méthode de chiffrement. + L\'empreinte SHA1 du certificat de votre appareil est : + L\'empreinte SHA1 du certificat du périphérique distant est : Paire demandée - Demande d\'appariement provenant de %1s + Demande d\'association provenant de %1s Lien reçu de %1s Appuyez pour ouvrir %1s Réception d\'un fichier en cours depuis %1s %1s Envoi d\'un fichier à %1s + Envoi de fichiers à %1s %1s + Envoi de %1$d sur %2$d fichiers Fichier reçu de %1s Impossible de recevoir le fichier depuis : %1s Appuyez pour ouvrir %1s Fichier envoyé à %1s %1s + Impossible d\'envoyer le fichier à %1s %1s Cliquer pour répondre Reconnecter Envoyer un clic droit Envoyer un clic central Afficher le clavier - Périphérique non apparié - Demande d\'appariement + Périphérique non associé + Demande d\'association Accepter Rejeter Périphérique - Apparier un périphérique + Associer un périphérique Contrôle distant Paramètres de connexion de KDE Lire @@ -111,9 +135,15 @@ Nom de périphérique non valable Texte reçu et enregistré dans le presse-papiers Liste personnalisée de périphériques + Associer un nouveau périphérique + Dissocier %s Ajouter des périphériques par IP Notifications sonores Vibrer et jouer un son quand un fichier est reçu + Personnaliser le dossier de destination + Les fichiers reçus apparaîtront dans le dossier de téléchargement + Les fichiers seront enregistrés dans le dossier ci-dessous + Dossier de destination Filtre des notifications Les notifications seront synchronisées pour les applications sélectionnées. Stockage interne @@ -123,8 +153,27 @@ (lecture seule) Images de l\'appareil photo Ajouter hôte/IP - Nom d\'hôte ou adresse IP  + "Nom d\'hôte ou adresse IP " Aucun lecteur trouvé N\'utilisez cette option que si votre périphérique n\'est pas détecté automatiquement. Saisissez l\'adresse IP ou le nom d\'hôte ci-dessous et appuyez sur le bouton pour l\'ajouter à la liste. Appuyez sur un élément existant pour le retirer de la liste. %1$s sur %2$s + Envoyer des fichiers + Périphériques KDE Connect + Les autres périphériques utilisant KDE Connect dans votre réseau apparaissent ici. + Périphérique associé + Renommer le périphérique + Renommer + Mettre à jour + Ce périphérique associé n\'est pas joignable. Assurez-vous qu\'il est bien connecté au même réseau. + Il semble que vous utilisiez une connexion de données mobile. KDE Connect fonctionne uniquement sur un réseau local. + Aucun navigateur de fichiers installé. + Envoyer un SMS + Envoyer des SMS depuis votre bureau + Ce module externe n\'est pas géré par le périphérique + Trouver mon téléphone + Trouver ma tablette + Fait sonner le périphérique pour vous aider à le retrouver + Trouvé + Ouvrir + Fermer From c18dc3b724d60d96b5a83e6ccd90d4c247137ef2 Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 21 Jun 2017 03:04:22 +0200 Subject: [PATCH 34/36] Fix crash when trying to stop stfp while it was mounted --- src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java b/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java index c2801a23..9fa6571f 100644 --- a/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java +++ b/src/org/kde/kdeconnect/Plugins/SftpPlugin/SimpleSftpServer.java @@ -125,7 +125,7 @@ class SimpleSftpServer { public void stop() { try { started = false; - sshd.stop(); + sshd.stop(true); } catch (Exception e) { e.printStackTrace(); } From 37aab9a52040e9ffd0fd685d7fc4d43dfda9310d Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 21 Jun 2017 03:26:22 +0200 Subject: [PATCH 35/36] Ignore all exceptions from ContentResolver.query --- src/org/kde/kdeconnect/Helpers/ContactsHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/kde/kdeconnect/Helpers/ContactsHelper.java b/src/org/kde/kdeconnect/Helpers/ContactsHelper.java index 92a860bb..90279638 100644 --- a/src/org/kde/kdeconnect/Helpers/ContactsHelper.java +++ b/src/org/kde/kdeconnect/Helpers/ContactsHelper.java @@ -59,7 +59,7 @@ public class ContactsHelper { , PhoneLookup.ID */ }, null, null, null); - } catch (IllegalArgumentException e) { + } catch (Exception e) { return contactInfo; } From 0ae3d487e35e6e45963ae51920fa1ef39dfdf53a Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Wed, 21 Jun 2017 03:24:02 +0200 Subject: [PATCH 36/36] Bumped version for release --- AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5bd322e9..1f055691 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="1650" + android:versionName="1.6.5">