2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-09-01 14:45:08 +00:00

Compare commits

...

33 Commits
v1.6 ... v1.6.3

Author SHA1 Message Date
Albert Vaca
23648a03e5 Bumped version to release 2017-05-16 21:05:17 +02:00
Simon Redman
3f188b5526 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
2017-05-16 21:03:59 +02:00
Albert Vaca
2d35b04713 Fix IllegalStateException: Fragment not attached to Activity
BUG: 379873
2017-05-16 21:01:45 +02:00
Albert Vaca
9a5b03c423 Fixing crash, apparently info can be null (?) 2017-05-16 21:01:45 +02:00
l10n daemon script
ee336aa414 GIT_SILENT made messages (after extraction) 2017-05-15 05:02:35 +02:00
Albert Vaca
a81eba9ea1 Bumped version number to release 2017-05-06 14:29:24 +02:00
Nicholas Killewald
c5022358de 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
2017-05-06 14:26:55 +02:00
Albert Vaca
9d1734406b Bumped version number to release 2017-05-06 12:54:06 +02:00
Albert Vaca
2d49715891 Removed print 2017-05-06 12:47:51 +02:00
Albert Vaca
9e6a4938ed Added an extra check to be really sure we are on data. 2017-05-06 12:47:46 +02:00
Albert Vaca
cc4a196334 Make android version check lint happy 2017-05-06 12:46:52 +02:00
Albert Vaca
c39620e33c Update gradle plugin 2017-05-06 12:38:04 +02:00
Albert Vaca
0dd26e5729 Removed an if to check for access to "/" as it never helped 2017-05-06 12:19:36 +02:00
l10n daemon script
86d0d3065c GIT_SILENT made messages (after extraction) 2017-03-14 19:05:45 +01:00
l10n daemon script
1f8f39a7f8 GIT_SILENT made messages (after extraction) 2017-03-09 06:56:51 +01:00
l10n daemon script
05ba2188de GIT_SILENT made messages (after extraction) 2017-03-05 08:01:12 +01:00
l10n daemon script
ba440bd5ea GIT_SILENT made messages (after extraction) 2017-03-04 07:13:18 +01:00
l10n daemon script
a94e082b68 GIT_SILENT made messages (after extraction) 2017-03-01 06:45:54 +01:00
Albert Vaca
def0cad889 Further refining the network detection 2017-02-28 21:21:51 +01:00
Albert Vaca
c93e4400e2 Fix crash when fragment.getContext() was null 2017-02-25 21:42:34 +01:00
Albert Vaca
9580154a13 Bumped version to release 2017-02-25 21:32:28 +01:00
Albert Vaca
48f5566326 Try a different approach to detect when on mobile data. 2017-02-25 21:25:06 +01:00
Albert Vaca
3ea5d43b99 Revert "Do not broadcast in 3G + info message"
As it couldn't be any other way, this broke somebody's workflow.

This reverts commit 440a12f86c.
2017-02-25 21:06:40 +01:00
l10n daemon script
a172430c11 GIT_SILENT made messages (after extraction) 2017-02-23 07:12:52 +01:00
l10n daemon script
b4b7b58cb2 GIT_SILENT made messages (after extraction) 2017-02-21 13:33:16 +01:00
Albert Vaca
8d99de59fc Fix crash on Android < 12 2017-02-20 22:59:52 +01:00
Albert Vaca
337cdba68f Prepare beta release 2017-02-20 20:36:55 +01:00
Albert Vaca
b3e1f6fbf8 Preparing a hotfix release 2017-02-20 20:25:02 +01:00
Albert Vaca
ecad7ccea2 Try not to lose filename extensions.
Android's Storage Access Framework abstraction wants us to use mimetypes
instead of file extensions, but for some file types it can't guess a useful
mimetype. In those cases, provide the extension as part of the base name.

BUG: 376638
2017-02-20 20:20:54 +01:00
l10n daemon script
b7df5348c0 GIT_SILENT made messages (after extraction) 2017-02-20 06:44:38 +01:00
Albert Vaca
440a12f86c Do not broadcast in 3G + info message 2017-02-18 19:06:37 +01:00
Albert Vaca
0e3b5af6bc Looks like it's not 2017-02-18 17:41:12 +01:00
Albert Vaca
b167b9629e Changed visibilities to package-private 2017-02-18 17:16:10 +01:00
29 changed files with 298 additions and 102 deletions

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.kde.kdeconnect_tp"
android:versionCode="1600"
android:versionName="1.6">
android:versionCode="1630"
android:versionName="1.6.3">
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="22" />

View File

@@ -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'
}
}

View File

@@ -70,7 +70,7 @@
</LinearLayout>
<TextView
android:id="@+id/unpair_message"
android:id="@+id/not_reachable_message"
android:visibility="gone"
android:layout_width="match_parent"
android:drawableStart="@drawable/ic_error_outline_black_48dp"
@@ -82,6 +82,19 @@
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/on_data_message"
android:visibility="gone"
android:layout_width="match_parent"
android:drawableStart="@drawable/ic_error_outline_black_48dp"
android:drawableLeft="@drawable/ic_error_outline_black_48dp"
android:drawablePadding="8dip"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/on_data_message"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<ListView
android:id="@+id/buttons_list"
android:layout_width="match_parent"

View File

@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Reanomena</string>
<string name="refresh">Refresca</string>
<string name="unreachable_description">Aquest dispositiu aparellat no és accessible. Assegureu-vos que està connectat a la mateixa xarxa.</string>
<string name="on_data_message">Sembla que esteu amb una connexió de dades mòbils. El KDE Connect només funciona amb xarxes locals.</string>
<string name="no_file_browser">No hi ha instal·lat cap explorador de fitxers.</string>
<string name="pref_plugin_telepathy">Envia un SMS</string>
<string name="pref_plugin_telepathy_desc">Envia missatges de text des de l\'escriptori</string>

View File

@@ -22,7 +22,7 @@
<string name="pref_plugin_notifications_desc">Zpřístupněte si upozornění z jiných zařízení</string>
<string name="pref_plugin_receive_notifications">Přijímat oznámení</string>
<string name="pref_plugin_receive_notifications_desc">Přijímat oznámení z jiného zařízení a zobrazovat je v Androidu</string>
<string name="pref_plugin_sharereceiver">Sdílet s přijmnout</string>
<string name="pref_plugin_sharereceiver">Sdílet a přijmout</string>
<string name="pref_plugin_sharereceiver_desc">Sdílet soubory a odkazy mezi zařízeními</string>
<string name="plugin_not_available">Tato vlastnost není pro vaši verzi Androidu platná</string>
<string name="device_list_empty">Žádná zařízení</string>
@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Přejmenovat</string>
<string name="refresh">Obnovit</string>
<string name="unreachable_description">Toto spárované zařízení je nedosažitelné. Ujistěte se, že běží ve stejné síti.</string>
<string name="on_data_message">Vypadá to, že jste na mobilním internetovém připojení. KDE Connect funguje pouze na lokální síti.</string>
<string name="no_file_browser">Není nainstalován žádný prohlížeč souborů.</string>
<string name="pref_plugin_telepathy">Poslat SMS</string>
<string name="pref_plugin_telepathy_desc">Posílejte zprávy ze své pracovní plochy</string>

View File

@@ -10,6 +10,8 @@
<string name="pref_plugin_clipboard_desc">Del indholdet af udklipsholderen</string>
<string name="pref_plugin_mousepad">Eksternt input</string>
<string name="pref_plugin_mousepad_desc">Brug din telefon eller tablet som mus og tastatur</string>
<string name="pref_plugin_remotekeyboard">Modtag eksterne tastetryk</string>
<string name="pref_plugin_remotekeyboard_desc">Modtag tastetryk-hændelser fra eksterne enheder</string>
<string name="pref_plugin_mpris">Multimediekontroller</string>
<string name="pref_plugin_mpris_desc">Giver en fjernbetjening til din medieafspiller</string>
<string name="pref_plugin_runcommand">Kør kommando</string>
@@ -30,6 +32,10 @@
<string name="no_permissions">Du skal give tilladelse for at tilgå bekendtgørelser</string>
<string name="send_ping">Send ping</string>
<string name="open_mpris_controls">Multimediekontrol</string>
<string name="remotekeyboard_editing_only_title">Håndtér kun eksterne tastetryk under redigering</string>
<string name="remotekeyboard_not_connected">Der er ingen aktiv ekstern tastaturforbindelse. Opret en i kdeconnect</string>
<string name="remotekeyboard_connected">Ekstern tastaturforbindelse er aktiv</string>
<string name="remotekeyboard_multiple_connections">Der er mere end en ekstern tastaturforbindelse, vælg den enhed der skal konfigureres</string>
<string name="open_mousepad">Eksternt input</string>
<string name="mousepad_info">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.</string>
<string name="mousepad_double_tap_settings_title">Angiv handling for tap med to fingre</string>
@@ -152,6 +158,7 @@
<string name="device_rename_confirm">Omdøb</string>
<string name="refresh">Genopfrisk</string>
<string name="unreachable_description">Denne parrede enhed kan ikke nås. Sørg for at den er forbundet til samme netværk som dig.</string>
<string name="on_data_message">Det lader til at du er på en mobil dataforbindelse. KDE Connect virker kun på lokale netværk.</string>
<string name="no_file_browser">Der er ingen filhåndtering installeret.</string>
<string name="pref_plugin_telepathy">Send SMS</string>
<string name="pref_plugin_telepathy_desc">Send SMS-beskeder fra din desktop</string>

View File

@@ -9,8 +9,9 @@
<string name="pref_plugin_clipboard">Abgleich der Zwischenablage</string>
<string name="pref_plugin_clipboard_desc">Inhalt der Zwischenablage freigeben</string>
<string name="pref_plugin_mousepad">Ferneingabe</string>
<string name="pref_plugin_mousepad_desc">Verwendet Ihr Handy als Tablett, Touchpad und Tastatur</string>
<string name="pref_plugin_mousepad_desc">Verwendet Ihr Handy als Tablet, Touchpad und Tastatur</string>
<string name="pref_plugin_mpris">Multimedia-Bedienung</string>
<string name="pref_plugin_mpris_desc">Eine Fernbedienung für Ihre Medienwiedergabe</string>
<string name="pref_plugin_runcommand">Befehl ausführen</string>
<string name="pref_plugin_runcommand_desc">Von Ihrem Telefon oder Tablett Befehle auf anderen Geräten ausführen</string>
<string name="pref_plugin_ping">Ping</string>
@@ -18,6 +19,7 @@
<string name="pref_plugin_notifications">Benachrichtigungs-Abgleich</string>
<string name="pref_plugin_notifications_desc">Zugriff auf Ihre Benachrichtigungen von anderen Geräten</string>
<string name="pref_plugin_receive_notifications">Benachrichtigungen empfangen</string>
<string name="pref_plugin_receive_notifications_desc">Empfangen und Anzeigen von Benachrichtigungen des anderen Geräts</string>
<string name="pref_plugin_sharereceiver">Veröffentlichen und Empfangen</string>
<string name="pref_plugin_sharereceiver_desc">Dateien und Adressen (URLs) zwischen Geräten teilen</string>
<string name="plugin_not_available">Diese Funktion ist in Ihrer Android-Version nicht verfügbar</string>
@@ -29,6 +31,7 @@
<string name="send_ping">Ping senden</string>
<string name="open_mpris_controls">Multimedia-Bedienung</string>
<string name="open_mousepad">Ferneingabe</string>
<string name="mousepad_info">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.</string>
<string name="mousepad_double_tap_settings_title">Aktionsausführung bei Berührung mit zwei Fingern einstellen</string>
<string name="mousepad_triple_tap_settings_title">Aktionsausführung bei Berührung mit drei Fingern einstellen</string>
<string name="mousepad_sensitivity_settings_title">Empfindlichkeit des Touchpads einstellen</string>
@@ -43,9 +46,9 @@
<string name="mousepad_sensitivity_default">Standard</string>
<string-array name="mousepad_sensitivity_entries">
<item>Langsamste</item>
<item>Above Slowest</item>
<item>Langsam</item>
<item>Standard</item>
<item>Above Default</item>
<item>Schnell</item>
<item>Schnellste</item>
</string-array>
<string name="category_connected_devices">Verbundene Geräte</string>
@@ -66,19 +69,25 @@
<string name="error_canceled_by_other_peer">Abbruch durch Gegenstelle</string>
<string name="error_invalid_key">Ungültiger Schlüssel empfangen</string>
<string name="encryption_info_title">Verschlüsselungsinformationen</string>
<string name="encryption_info_msg_no_ssl">Das andere Gerät verwendet eine ältere Version von KDE-Connect, eine veraltete Verschlüsselungsmethode wird verwendet.</string>
<string name="my_device_fingerprint">Der SHA1-Fingerabdruck Ihres Gerätezertifikats lautet:</string>
<string name="remote_device_fingerprint">Der SHA1-Fingerabdruck des Gerätezertifikats der Gegenstelle lautet:</string>
<string name="pair_requested">Verbindung angefordert</string>
<string name="pairing_request_from">Verbindungsanfrage von %1s</string>
<string name="received_url_title">Verknüpfung von %1s erhalten</string>
<string name="received_url_text">Tippen um „%1s“ zu öffnen</string>
<string name="incoming_file_title">Eingehende Datei von %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Datei wird an %1s gesendet</string>
<string name="outgoing_files_title">Datei wird an %1s gesendet</string>
<string name="outgoing_file_text">%1s</string>
<string name="outgoing_files_text">%1$d von %2$d Dateien gesendet</string>
<string name="received_file_title">Datei von %1s erhalten</string>
<string name="received_file_fail_title">Der Empfang der Datei %1s ist fehlgeschlagen</string>
<string name="received_file_text">Tippen um „%1s“ zu öffnen</string>
<string name="sent_file_title">Datei an %1s gesendet</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Das Senden der Datei an %1s ist fehlgeschlagen</string>
<string name="sent_file_failed_text">%1s</string>
<string name="tap_to_answer">Tippen zum Antworten</string>
<string name="reconnect">Erneut verbinden</string>
@@ -101,6 +110,7 @@
<string name="mpris_volume">Lautstärke</string>
<string name="mpris_settings">Multimedia-Einstellungen</string>
<string name="mpris_time_settings_title">Knöpfe Vorwärts/Rückwärts</string>
<string name="mpris_time_settings_summary">Sprungweite für Vorlauf/Rücklauf anpassen.</string>
<string-array name="mpris_time_entries">
<item>10 Sekunden</item>
<item>20 Sekunden</item>
@@ -121,9 +131,13 @@
<string name="custom_devices_settings">Benutzerdefinierte Geräteliste</string>
<string name="pair_device_action">Ein neues Gerät verbinden</string>
<string name="unpair_device_action">Verbindung %s trennen</string>
<string name="custom_device_list">Geräte nach IP hinzufügen</string>
<string name="custom_device_list">Geräte nach IP-Adresse hinzufügen</string>
<string name="share_notification_preference">Ausführliche Benachrichtigungen</string>
<string name="share_notification_preference_summary">Beim Empfang einer Datei vibrieren und einen Sound abspielen</string>
<string name="share_destination_customize">Zielverzeichnis anpassen</string>
<string name="share_destination_customize_summary_disabled">Empfangene Dateien werden in Downloads gespeichert</string>
<string name="share_destination_customize_summary_enabled">Dateien werden im folgenden Verzeichnis gespeichert</string>
<string name="share_destination_folder_preference">Zielverzeichnis</string>
<string name="title_activity_notification_filter">Benachrichtigungs-Filter</string>
<string name="filter_apps_info">Benachrichtigungen werden zwischen den ausgewählten Anwendungen abgeglichen.</string>
<string name="sftp_internal_storage">Interner Speicher</string>
@@ -132,17 +146,19 @@
<string name="sftp_sdcard">SD-Karte</string>
<string name="sftp_readonly">(Nur lesen)</string>
<string name="sftp_camera">Kamerabilder</string>
<string name="add_host">Rechner/IP hinzufügen</string>
<string name="add_host_hint">Rechnername oder IP</string>
<string name="add_host">Rechner/IP-Adresse hinzufügen</string>
<string name="add_host_hint">Rechnername oder IP-Adresse</string>
<string name="no_players_connected">Keine Medienspieler gefunden</string>
<string name="custom_dev_list_help">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.</string>
<string name="mpris_player_on_device">%1$s auf %2$s</string>
<string name="send_files">Dateien senden</string>
<string name="pairing_title">KDE-Connect-Geräte</string>
<string name="pairing_description">Andere Geräte, auf denen KDE-Connect läuft im gleichen Netzwerk,sollte hier angezeigt werden.</string>
<string name="pairing_description">Andere Geräte im selben Netzwerk, auf denen KDE-Connect läuft, sollten hier angezeigt werden.</string>
<string name="device_paired">Gerät verbunden</string>
<string name="device_rename_title">Geräte umbenennen</string>
<string name="device_rename_confirm">Umbenennen</string>
<string name="refresh">Aktualisieren</string>
<string name="unreachable_description">Das verbundene Gerät ist nicht erreichbar. Stellen Sie sicher daß es mit demselben Netzwerk verbunden ist.</string>
<string name="no_file_browser">Es sind keine Dateiverwaltungsprogramme installiert.</string>
<string name="pref_plugin_telepathy">SMS senden</string>
<string name="pref_plugin_telepathy_desc">Text-Nachrichten von Ihrer Arbeitsfläche senden</string>

View File

@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Rename</string>
<string name="refresh">Refresh</string>
<string name="unreachable_description">This paired device is not reachable. Make sure it is connected to your same network.</string>
<string name="on_data_message">It looks like you are on a mobile data connection. KDE Connect only works on local networks.</string>
<string name="no_file_browser">There are no file browsers installed.</string>
<string name="pref_plugin_telepathy">Send SMS</string>
<string name="pref_plugin_telepathy_desc">Send text messages from your desktop</string>

View File

@@ -10,6 +10,8 @@
<string name="pref_plugin_clipboard_desc">Compartir el contenido del portapapeles</string>
<string name="pref_plugin_mousepad">Entrada remota</string>
<string name="pref_plugin_mousepad_desc">Usar su teléfono o tableta como teclado y teclado táctil</string>
<string name="pref_plugin_remotekeyboard">Recibir pulsaciones de teclas remotas</string>
<string name="pref_plugin_remotekeyboard_desc">Reciba eventos de pulsación de teclas desde dispositivos remotos</string>
<string name="pref_plugin_mpris">Controles multimedia</string>
<string name="pref_plugin_mpris_desc">Proporciona un control remoto para su reproductor de medios</string>
<string name="pref_plugin_runcommand">Ejecutar orden</string>
@@ -30,6 +32,10 @@
<string name="no_permissions">Debe otorgar permiso para acceder a las notificaciones</string>
<string name="send_ping">Enviar ping</string>
<string name="open_mpris_controls">Control multimedia</string>
<string name="remotekeyboard_editing_only_title">Manejar teclas remotas solo al editar</string>
<string name="remotekeyboard_not_connected">No hay ninguna conexión remota de teclado activa, establezca una en kdeconnect</string>
<string name="remotekeyboard_connected">La conexión remota de teclado está activa</string>
<string name="remotekeyboard_multiple_connections">Hay más de una conexión remota de teclado, seleccione el dispositivo a configurar</string>
<string name="open_mousepad">Entrada remota</string>
<string name="mousepad_info">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.</string>
<string name="mousepad_double_tap_settings_title">Establecer la acción al pulsar con dos dedos</string>
@@ -153,12 +159,13 @@
<string name="mpris_player_on_device">%1$s en %2$s</string>
<string name="send_files">Enviar archivos</string>
<string name="pairing_title">Dispositivos de KDE Connect</string>
<string name="pairing_description">Otros dispositivos ejecutando KDE Connect en su misma red deberían aparecer aquí.</string>
<string name="pairing_description">Cualquier otro dispositivo ejecutando KDE Connect en su misma red debería aparecer aquí.</string>
<string name="device_paired">Dispositivo vinculado</string>
<string name="device_rename_title">Renombrar dispositivo</string>
<string name="device_rename_confirm">Renombrar</string>
<string name="refresh">Actualizar</string>
<string name="unreachable_description">Este dispositivo vinculado no está disponible. Asegúrese que está conectado a su misma red.</string>
<string name="on_data_message">Parece que se encuentra en una conexión de datos móviles. KDE Connect solo funciona en redes locales.</string>
<string name="no_file_browser">No hay navegadores de archivos instalados.</string>
<string name="pref_plugin_telepathy">Enviar SMS</string>
<string name="pref_plugin_telepathy_desc">Enviar mensajes de texto desde el escritorio</string>

View File

@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Rinomina</string>
<string name="refresh">Aggiorna</string>
<string name="unreachable_description">Questo dispositivo associato non è raggiungibile. Assicurati che sia connesso alla tua stessa rete.</string>
<string name="on_data_message">Sembra che tu stia utilizzando una connessione dati mobile. KDE Connect funziona solo su reti locali.</string>
<string name="no_file_browser">Non ci sono navigatori di file installati.</string>
<string name="pref_plugin_telepathy">Invia SMS</string>
<string name="pref_plugin_telepathy_desc">Invia messaggi di testo dal tuo desktop</string>

View File

@@ -67,7 +67,7 @@
<string name="pair_new_device">Nieuw apparaat paren</string>
<string name="unknown_device">Onbekend apparaat</string>
<string name="error_not_reachable">Apparaat niet bereikbaar</string>
<string name="error_already_requested">Paar maken is al gevraagd</string>
<string name="error_already_requested">Paarvorming is al gevraagd</string>
<string name="error_already_paired">Apparaat is al gepaard</string>
<string name="error_could_not_send_package">Kon pakket niet verzenden</string>
<string name="error_timed_out">Tijdslimiet overschreden</string>
@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Hernoemen</string>
<string name="refresh">Verversen</string>
<string name="unreachable_description">Dit gepaarde apparaat is niet bereikbaar. Ga na dat het is verbonden met uw zelfde netwerk.</string>
<string name="on_data_message">Het lijkt of op een mobiele gegevensverbinding zit. KDE Connect werkt alleen op locale netwerken.</string>
<string name="no_file_browser">Er zijn geen bestandsbrowsers geïnstalleerd.</string>
<string name="pref_plugin_telepathy">SMS verzenden</string>
<string name="pref_plugin_telepathy_desc">Stuur tekstberichten van uw bureaublad</string>

View File

@@ -10,6 +10,8 @@
<string name="pref_plugin_clipboard_desc">Udostępnij zawartość schowka</string>
<string name="pref_plugin_mousepad">Zdalne sterowanie</string>
<string name="pref_plugin_mousepad_desc">Użyj swojego telefonu lub tabletu jako myszy i klawiatury</string>
<string name="pref_plugin_remotekeyboard">Odbieraj zdalne naciśnięcia klawiszy</string>
<string name="pref_plugin_remotekeyboard_desc">Odbieraj naciśnięcia klawiszy od urządzeń zdalnych</string>
<string name="pref_plugin_mpris">Sterowanie multimediami</string>
<string name="pref_plugin_mpris_desc">Zapewnia zdalne sterowanie twoim odtwarzaczem multimedialnym</string>
<string name="pref_plugin_runcommand">Wykonaj polecenie</string>
@@ -30,6 +32,10 @@
<string name="no_permissions">Musisz przydzielić uprawnienia, aby uzyskać dostęp do powiadomień</string>
<string name="send_ping">Wyślij ping</string>
<string name="open_mpris_controls">Sterowanie multimediami</string>
<string name="remotekeyboard_editing_only_title">Obsługuj zdalne naciśnięcia klawiszy tylko podczas edycji</string>
<string name="remotekeyboard_not_connected">Nie istnieje połączenie zdalnej klawiatury, nawiąż takie połączenie w kdeconnect</string>
<string name="remotekeyboard_connected">Połączenie zdalnej klawiatury jest nawiązane</string>
<string name="remotekeyboard_multiple_connections">Nawiązano więcej niż jedno połączenie zdalnej klawiatury, wybierz urządzenie do ustawienia</string>
<string name="open_mousepad">Zdalne sterowanie</string>
<string name="mousepad_info">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ć.</string>
<string name="mousepad_double_tap_settings_title">Ustaw działanie po dwukrotnym stuknięciu palcem</string>
@@ -159,6 +165,7 @@
<string name="device_rename_confirm">Zmień nazwę</string>
<string name="refresh">Odśwież</string>
<string name="unreachable_description">To sparowane urządzenie jest nieosiągalne. Upewnij się, że jest podłączone do tej samej sieci.</string>
<string name="on_data_message">Wygląda na to, że korzystasz z internetu mobilnego. KDE Connect działa tylko na lokalnych sieciach.</string>
<string name="no_file_browser">Nie wgrano żadanych przeglądarek plików.</string>
<string name="pref_plugin_telepathy">Wyślij SMS-a</string>
<string name="pref_plugin_telepathy_desc">Wyślij wiadomość tekstową z komputera</string>

View File

@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Mudar o Nome</string>
<string name="refresh">Actualizar</string>
<string name="unreachable_description">Este dispositivo emparelhado não está acessível. Certifique-se que está ligado à mesma rede que você.</string>
<string name="on_data_message">Parece que está com uma ligação de dados móveis. O KDE Connect só se liga em redes locais.</string>
<string name="no_file_browser">Não existem gestores de ficheiros instalados.</string>
<string name="pref_plugin_telepathy">Enviar um SMS</string>
<string name="pref_plugin_telepathy_desc">Enviar mensagens de texto a partir do seu ambiente de trabalho</string>

View File

@@ -5,15 +5,23 @@
<string name="pref_plugin_battery">Состояние батареи</string>
<string name="pref_plugin_battery_desc">Периодическое информирование о состоянии батареи</string>
<string name="pref_plugin_sftp">Просмотр файловой системы</string>
<string name="pref_plugin_sftp_desc">Позволяет удалённо просматривать файловую систему устройства</string>
<string name="pref_plugin_clipboard">Синхронизация буфера обмена</string>
<string name="pref_plugin_clipboard_desc">Использование общего буфера обмена</string>
<string name="pref_plugin_mousepad">Удалённый ввод</string>
<string name="pref_plugin_mousepad_desc">Использование телефона или планшета в качестве сенсорной панели и клавиатуры</string>
<string name="pref_plugin_remotekeyboard">Получение удалённых нажатий клавиш</string>
<string name="pref_plugin_remotekeyboard_desc">Получение нажатий клавиш с удалённых устройств</string>
<string name="pref_plugin_mpris">Управление воспроизведением</string>
<string name="pref_plugin_mpris_desc">Обеспечивает дистанционное управление медиапроигрывателем</string>
<string name="pref_plugin_runcommand">Запуск команд</string>
<string name="pref_plugin_runcommand_desc">Удалённый запуск команд с телефона или планшета</string>
<string name="pref_plugin_ping">Пинг</string>
<string name="pref_plugin_ping_desc">Отправка и получение тестовых сигналов</string>
<string name="pref_plugin_notifications">Синхронизация уведомлений</string>
<string name="pref_plugin_notifications_desc">Доступ к уведомлениям с других устройств</string>
<string name="pref_plugin_receive_notifications">Получение уведомлений</string>
<string name="pref_plugin_receive_notifications_desc">Получение уведомлений с другого устройства и показ их на Android</string>
<string name="pref_plugin_sharereceiver">Отправка и приём данных</string>
<string name="pref_plugin_sharereceiver_desc">Пересылка файлов и адресов URL между устройствами</string>
<string name="plugin_not_available">Эта функциональность недоступна в вашей версии Android</string>
@@ -24,10 +32,16 @@
<string name="no_permissions">Нужно разрешить доступ к уведомлениям</string>
<string name="send_ping">Отправить тестовый сигнал</string>
<string name="open_mpris_controls">Управление воспроизведением</string>
<string name="remotekeyboard_editing_only_title">Обрабатывать удалённые нажатия только при редактировании</string>
<string name="remotekeyboard_not_connected">Нет активного соединения с удалённой клавиатурой, установите его в KDE Connect</string>
<string name="remotekeyboard_connected">Соединение с удалённой клавиатурой активно</string>
<string name="remotekeyboard_multiple_connections">Подключено более одной удалённой клавиатуры, выберите устройство для настройки</string>
<string name="open_mousepad">Удалённый ввод</string>
<string name="mousepad_info">Перемещайте палец по экрану для перемещения курсора мыши. Коснитесь для нажатия, используйте два/три пальца для правой и средней кнопок. Используйте долгое нажатие для перетаскивания.</string>
<string name="mousepad_double_tap_settings_title">Действие при нажатии двумя пальцами</string>
<string name="mousepad_triple_tap_settings_title">Действие при нажатии тремя пальцами</string>
<string name="mousepad_sensitivity_settings_title">Чувствительность сенсорной панели</string>
<string name="mousepad_scroll_direction_title">Инвертировать направление прокрутки</string>
<string-array name="mousepad_tap_entries">
<item>Нажатие правой кнопки</item>
<item>Нажатие средней кнопки</item>
@@ -35,12 +49,13 @@
</string-array>
<string name="mousepad_double_default">Нажатие правой кнопки</string>
<string name="mousepad_triple_default">Нажатие средней кнопки</string>
<string name="mousepad_sensitivity_default">Обычная</string>
<string-array name="mousepad_sensitivity_entries">
<item>Slowest</item>
<item>Above Slowest</item>
<item>Default</item>
<item>Above Default</item>
<item>Fastest</item>
<item>Самая низкая</item>
<item>Низкая</item>
<item>Обычная</item>
<item>Высокая</item>
<item>Самая высокая</item>
</string-array>
<string name="category_connected_devices">Подключённые устройства</string>
<string name="category_not_paired_devices">Доступные устройства</string>
@@ -49,15 +64,20 @@
<string name="device_menu_plugins">Настройка модулей</string>
<string name="device_menu_unpair">Снять сопряжение</string>
<string name="device_not_reachable">Сопряжённое устройство недоступно</string>
<string name="pair_new_device">Подключить новое устройство</string>
<string name="unknown_device">Неизвестное устройство</string>
<string name="error_not_reachable">Устройство недоступно</string>
<string name="error_already_requested">Запрос на сопряжение уже был сделан</string>
<string name="error_already_paired">Устройство уже сопряжено</string>
<string name="error_could_not_send_package">Не удалось отправить пакет.</string>
<string name="error_could_not_send_package">Не удалось отправить пакет</string>
<string name="error_timed_out">Истекло время ожидания</string>
<string name="error_canceled_by_user">Отменено пользователем</string>
<string name="error_canceled_by_other_peer">Отменено другим участником</string>
<string name="error_invalid_key">Получен недопустимый ключ</string>
<string name="encryption_info_title">Информация о шифровании</string>
<string name="encryption_info_msg_no_ssl">На другом устройстве используется старая версия KDE Connect, используется старый метод шифрования.</string>
<string name="my_device_fingerprint">Отпечаток SHA-1 сертификата вашего устройства:</string>
<string name="remote_device_fingerprint">Отпечаток SHA-1 сертификата удалённого устройства:</string>
<string name="pair_requested">Запрошено сопряжение</string>
<string name="pairing_request_from">Запрос на сопряжение от %1s</string>
<string name="received_url_title">Получена ссылка от %1s</string>
@@ -65,12 +85,15 @@
<string name="incoming_file_title">Входящий файл с %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Отправка файла на %1s</string>
<string name="outgoing_files_title">Отправка файлов на %1s</string>
<string name="outgoing_file_text">%1s</string>
<string name="outgoing_files_text">Отправлено %1$d из %2$d файлов</string>
<string name="received_file_title">Получен файл с %1s</string>
<string name="received_file_fail_title">Не удалось получить файл с %1s</string>
<string name="received_file_text">Нажмите, чтобы открыть «%1s»</string>
<string name="sent_file_title">Файл отправлен на %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Не удалось отправить файл на %1s</string>
<string name="sent_file_failed_text">%1s</string>
<string name="tap_to_answer">Нажмите, чтобы ответить</string>
<string name="reconnect">Подключить заново</string>
@@ -102,8 +125,8 @@
<item>2 минуты</item>
</string-array>
<string name="share_to">Отправить на...</string>
<string name="protocol_version_older">Это устройство использует старую версию протокола.</string>
<string name="protocol_version_newer">Это устройство использует более новую версию протокола.</string>
<string name="protocol_version_older">Это устройство использует старую версию протокола</string>
<string name="protocol_version_newer">Это устройство использует более новую версию протокола</string>
<string name="general_settings">Общие параметры</string>
<string name="plugin_settings">Настройка</string>
<string name="plugin_settings_with_name">Настройка %s</string>
@@ -116,7 +139,11 @@
<string name="unpair_device_action">Снять сопряжение с %s</string>
<string name="custom_device_list">Добавить устройства по IP</string>
<string name="share_notification_preference">Звуковые уведомления</string>
<string name="share_notification_preference_summary">Использовать звуковой сигнал и вибрацию при получении файла.</string>
<string name="share_notification_preference_summary">Использовать вибрацию и звуковой сигнал при получении файла</string>
<string name="share_destination_customize">Задать целевой каталог</string>
<string name="share_destination_customize_summary_disabled">Полученные файлы появятся в каталоге Загрузки</string>
<string name="share_destination_customize_summary_enabled">Файлы будут сохранены в указанном ниже каталоге</string>
<string name="share_destination_folder_preference">Целевой каталог</string>
<string name="title_activity_notification_filter">Фильтр уведомлений</string>
<string name="filter_apps_info">Уведомления будут синхронизированы для выбранных приложений.</string>
<string name="sftp_internal_storage">Встроенная память</string>
@@ -138,10 +165,14 @@
<string name="device_rename_confirm">Переименовать</string>
<string name="refresh">Обновить</string>
<string name="unreachable_description">Это сопряжённое устройство недоступно. Проверьте, что оно подключено к той же локальной сети.</string>
<string name="on_data_message">Похоже, вы подключены к мобильной сети. KDE Connect работает только в локальных сетях.</string>
<string name="no_file_browser">Не удалось открыть диалог выбора файла.</string>
<string name="pref_plugin_telepathy">Отправка SMS</string>
<string name="pref_plugin_telepathy_desc">Отправка SMS-сообщений с вашего компьютера</string>
<string name="plugin_not_supported">Этот модуль не поддерживается устройством</string>
<string name="findmyphone_title">Поиск телефона</string>
<string name="findmyphone_title_tablet">Поиск планшета</string>
<string name="findmyphone_description">Подача звукового сигнала на устройстве, чтобы вы могли его найти</string>
<string name="findmyphone_found">Найден</string>
<string name="open">Открыть</string>
<string name="close">Закрыть</string>

View File

@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Premenovať</string>
<string name="refresh">Obnoviť</string>
<string name="unreachable_description">Toto spárované zariadenie nie je dosiahnuteľné. Prosím, uistite sa, že je pripojené do rovnakej siete.</string>
<string name="on_data_message">Zdá sa, že ste na mobilom dátovom pripojení. KDE Connect funguje iba na lokálnej sieti.</string>
<string name="no_file_browser">Nie sú nainštalované žiadne prehliadače.</string>
<string name="pref_plugin_telepathy">Poslať SMS</string>
<string name="pref_plugin_telepathy_desc">Posielať textové správy z vášho počítača</string>

View File

@@ -10,6 +10,8 @@
<string name="pref_plugin_clipboard_desc">Dela klippbordets innehåll</string>
<string name="pref_plugin_mousepad">Fjärrinmatning</string>
<string name="pref_plugin_mousepad_desc">Använd telefonen eller surfplattan som mus och tangentbord</string>
<string name="pref_plugin_remotekeyboard">Ta emot fjärrtangentnedtryckningar</string>
<string name="pref_plugin_remotekeyboard_desc">Ta emot tangentnedtryckningar från fjärrenheter</string>
<string name="pref_plugin_mpris">Multimediakontroller</string>
<string name="pref_plugin_mpris_desc">Tillhandahåller en fjärrkontroll för mediaspelaren</string>
<string name="pref_plugin_runcommand">Kör kommando</string>
@@ -30,6 +32,10 @@
<string name="no_permissions">Du måste ge rättighet att komma åt underrättelser</string>
<string name="send_ping">Skicka ping</string>
<string name="open_mpris_controls">Kontroll av multimedia</string>
<string name="remotekeyboard_editing_only_title">Hantera bara fjärrtangenter vid redigering</string>
<string name="remotekeyboard_not_connected">Det finns ingen aktiv fjärrtangentbordsanslutning, upprätta en i KDE-anslut</string>
<string name="remotekeyboard_connected">Fjärrtangentbordsanslutning är aktiv</string>
<string name="remotekeyboard_multiple_connections">Det finns mer än en fjärrtangentbordsanslutning, välj enhet att anpassa</string>
<string name="open_mousepad">Fjärrinmatning</string>
<string name="mousepad_info">Flytta fingret på skärmen för att röra muspekaren. Rör för att klicka, och använd två eller tre fingrar för höger- och mittenknapparna. Använd en längre beröring för drag och släpp.</string>
<string name="mousepad_double_tap_settings_title">Ställ in åtgärd vid två fingerberöringar</string>
@@ -159,6 +165,7 @@
<string name="device_rename_confirm">Byt namn</string>
<string name="refresh">Uppdatera</string>
<string name="unreachable_description">Den här ihopparade apparaten kan inte nås. Försäkra dig om att den är ansluten till samma nätverk.</string>
<string name="on_data_message">Det verkar som om du använder en mobil dataanslutning. KDE-anslut fungerar bara på lokala nätverk.</string>
<string name="no_file_browser">Det finns inga filbläddrare installerade.</string>
<string name="pref_plugin_telepathy">Skicka SMS</string>
<string name="pref_plugin_telepathy_desc">Skicka textmeddelanden från skrivbordet</string>

View File

@@ -165,6 +165,7 @@
<string name="device_rename_confirm">Перейменувати</string>
<string name="refresh">Оновити</string>
<string name="unreachable_description">Цей пов’язаний пристрій недоступний. Переконайтеся, що його з’єднано з вашою мережею.</string>
<string name="on_data_message">Здається, мережа працює у режимі мобільного з’єднання. KDE Connect може працювати лише у локальних мережах.</string>
<string name="no_file_browser">Програм для навігації файловою системою не встановлено.</string>
<string name="pref_plugin_telepathy">Надіслати SMS</string>
<string name="pref_plugin_telepathy_desc">Надсилати текстові повідомлення з вашої робочої станції</string>

View File

@@ -193,6 +193,7 @@
<string name="device_rename_confirm">Rename</string>
<string name="refresh">Refresh</string>
<string name="unreachable_description">This paired device is not reachable. Make sure it is connected to your same network.</string>
<string name="on_data_message">It looks like you are on a mobile data connection. KDE Connect only works on local networks.</string>
<string name="no_file_browser">There are no file browsers installed.</string>
<string name="pref_plugin_telepathy">Send SMS</string>
<string name="pref_plugin_telepathy_desc">Send text messages from your desktop</string>

View File

@@ -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;
@@ -68,18 +69,18 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
final static int MAX_PORT = 1764;
final static int PAYLOAD_TRANSFER_MIN_PORT = 1739;
private final Context context;
final Context context;
private final HashMap<String, LanLink> visibleComputers = new HashMap<>(); //Links by device id
private ServerSocket tcpServer;
ServerSocket tcpServer;
private DatagramSocket udpServer;
private DatagramSocket udpServerOldPort;
private boolean listening = false;
boolean listening = false;
// To prevent infinte loop between Android < IceCream because both device can only broadcast identity package but cannot connect via TCP
private ArrayList<InetAddress> reverseConnectionBlackList = new ArrayList<>();
ArrayList<InetAddress> reverseConnectionBlackList = new ArrayList<>();
@Override // SocketClosedCallback
public void linkDisconnected(LanLink brokenLink) {
@@ -89,7 +90,7 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
}
//They received my UDP broadcast and are connecting to me. The first thing they sned should be their identity.
public void tcpPackageReceived(Socket socket) throws Exception {
void tcpPackageReceived(Socket socket) throws Exception {
NetworkPackage networkPackage;
try {
@@ -112,7 +113,7 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
}
//I've received their broadcast and should connect to their TCP socket and send my identity.
protected void udpPacketReceived(DatagramPacket packet) throws Exception {
void udpPacketReceived(DatagramPacket packet) throws Exception {
final InetAddress address = packet.getAddress();
@@ -171,7 +172,7 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
}
}
private void configureSocket(Socket socket) {
void configureSocket(Socket socket) {
try {
socket.setKeepAlive(true);
} catch (SocketException e) {
@@ -360,7 +361,12 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
throw new IOException("No ports available");
}
void broadcastUdpPackage() {
private void broadcastUdpPackage() {
if (NetworkHelper.isOnMobileNetwork(context)) {
Log.w("LanLinkProvider", "On 3G network, not sending broadcast.");
return;
}
new Thread(new Runnable() {
@Override

View File

@@ -119,7 +119,7 @@ public class BackgroundService extends Service {
}
};
private void onDeviceListChanged() {
public void onDeviceListChanged() {
for(DeviceListChangedCallback callback : deviceListChangedCallbacks.values()) {
callback.onDeviceListChanged();
}

View File

@@ -0,0 +1,53 @@
package org.kde.kdeconnect.Helpers;
import android.content.Context;
import android.net.ConnectivityManager;
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) {
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;
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
}
} catch (Exception e) {
Log.e("NetworkHelper", "Exception reading procnetarp");
e.printStackTrace();
}
}
return false;
}
}

View File

@@ -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();
}
});

View File

@@ -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<StorageHelper.StorageInfo> storageList = StorageHelper.getStorageList();
ArrayList<String> paths = new ArrayList<>();
ArrayList<String> pathNames = new ArrayList<>();
List<StorageHelper.StorageInfo> storageList = StorageHelper.getStorageList();
ArrayList<String> paths = new ArrayList<>();
ArrayList<String> 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);

View File

@@ -144,6 +144,17 @@ class SimpleSftpServer {
try {
for (Enumeration<NetworkInterface> 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<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {

View File

@@ -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;
@@ -119,11 +120,15 @@ public class SharePlugin extends Plugin {
final String defaultPath = ShareSettingsActivity.getDefaultDestinationDirectory().getAbsolutePath();
final String filename = customDestination? originalFilename : FilesHelper.findNonExistingNameForNewFile(defaultPath, originalFilename);
final String nameWithoutExtension = FilesHelper.getFileNameWithoutExt(filename);
String displayName = FilesHelper.getFileNameWithoutExt(filename);
final String mimeType = FilesHelper.getMimeTypeFromFile(filename);
if ("*/*".equals(mimeType)) {
displayName = filename;
}
final DocumentFile destinationFolderDocument = ShareSettingsActivity.getDestinationDirectory(context);
final DocumentFile destinationDocument = destinationFolderDocument.createFile(mimeType, nameWithoutExtension);
final DocumentFile destinationDocument = destinationFolderDocument.createFile(mimeType, displayName);
final OutputStream destinationOutput = context.getContentResolver().openOutputStream(destinationDocument.getUri());
final Uri destinationUri = destinationDocument.getUri();
@@ -203,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);
@@ -224,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 {

View File

@@ -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<String> 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

View File

@@ -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<SmsMessage> messages = new ArrayList<SmsMessage>();
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<SmsMessage> 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<String, String> contactInfo = ContactsHelper.phoneNumberLookup(context, phoneNumber);
if (phoneNumber != null) {
np.set("phoneNumber", phoneNumber);

View File

@@ -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;
@@ -130,10 +131,6 @@ public class DeviceFragment extends Fragment {
refreshUI();
//TODO: Is this needed?
//if (!device.hasPluginsLoaded() && device.isReachable()) {
// device.reloadPluginsFromSettings();
//}
}
});
@@ -296,21 +293,6 @@ public class DeviceFragment extends Fragment {
public void onResume() {
super.onResume();
//TODO: Is this needed?
/*
BackgroundService.RunCommand(mActivity, new BackgroundService.InstanceCallback() {
@Override
public void onServiceStart(BackgroundService service) {
if (mDeviceId != null) {
Device device = service.getDevice(mDeviceId);
if (device != null && device.isReachable()) {
device.reloadPluginsFromSettings();
}
}
}
});
*/
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@@ -352,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<ListAdapter.Item> items = new ArrayList<>();

View File

@@ -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;
}
@@ -96,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
@@ -104,6 +112,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<Device> devices = service.getDevices().values();
final ArrayList<ListAdapter.Item> items = new ArrayList<>();