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

Compare commits

..

1016 Commits

Author SHA1 Message Date
Albert Vaca Cintora
b7f3a7d868 Release 1.32.9 2024-10-21 17:16:54 +02:00
Albert Vaca Cintora
e613e7e09d Change wording to try to make Google happy 2024-10-21 16:48:51 +02:00
Albert Vaca Cintora
cb44c70d17 Bump deps 2024-10-21 16:48:51 +02:00
Albert Vaca Cintora
056b569951 Revert "Replace ClassIndex (unmaintained) with KlassIndex"
Fixes the R8 minifier error "Type fyi.fax.klassindex.AnnotationIndex is defined multiple times"

This reverts commit 526c3a9c4d.
2024-10-21 16:48:51 +02:00
l10n daemon script
2d421e3eb6 GIT_SILENT made messages (after extraction) 2024-10-21 01:50:35 +00:00
l10n daemon script
5674ddd3e9 GIT_SILENT Sync po/docbooks with svn 2024-10-20 02:20:20 +00:00
l10n daemon script
5bb996a6ac GIT_SILENT made messages (after extraction) 2024-10-20 01:49:51 +00:00
l10n daemon script
d89ab2bb20 GIT_SILENT made messages (after extraction) 2024-10-19 01:52:02 +00:00
l10n daemon script
e5661225a1 GIT_SILENT made messages (after extraction) 2024-10-17 01:49:15 +00:00
l10n daemon script
cc38149834 GIT_SILENT made messages (after extraction) 2024-10-16 01:51:14 +00:00
l10n daemon script
4805ea91b8 GIT_SILENT made messages (after extraction) 2024-10-15 01:47:53 +00:00
l10n daemon script
2553a7cebb GIT_SILENT made messages (after extraction) 2024-10-14 01:46:06 +00:00
Albert Vaca Cintora
526c3a9c4d Replace ClassIndex (unmaintained) with KlassIndex 2024-10-13 23:51:35 +02:00
Albert Vaca Cintora
333ad876aa Add recommended "uses-feature" based on the permissions 2024-10-13 23:14:51 +02:00
Albert Vaca Cintora
588cc8dfcf compileSdk should not be lower than targetSdk 2024-10-13 22:18:56 +02:00
Albert Vaca Cintora
48dd405201 Request bluetooth permissions with an explanation
The Play Store requires an explanation before requesting any permissions
2024-10-13 22:17:48 +02:00
Albert Vaca Cintora
1fad01e306 Bump dependencies 2024-10-13 21:49:00 +02:00
l10n daemon script
c78dd6f40d GIT_SILENT made messages (after extraction) 2024-10-12 01:48:30 +00:00
l10n daemon script
3084513778 GIT_SILENT made messages (after extraction) 2024-10-11 01:56:46 +00:00
l10n daemon script
e592b45a61 GIT_SILENT made messages (after extraction) 2024-10-10 01:47:37 +00:00
Albert Vaca Cintora
deee9cc2e2 Release 1.32.7 2024-10-08 22:41:20 +02:00
Albert Vaca Cintora
a107796ec2 Change Iterator argument to List 2024-10-08 22:38:01 +02:00
Albert Vaca Cintora
c32e00bb47 Fix plugin list not recomposing 2024-10-08 22:37:46 +02:00
Albert Vaca Cintora
ba98e21d40 Make every pending intent immutable except the one for the widget
The widget runs as part of the launcher (so, a different app) which needs
to modify the intent to tell us what command the user selected.
2024-10-08 22:18:58 +02:00
Luca Carlon
551b089d9a Do not use FLAG_MUTABLE when targeting Android >= 34
BUG: 494158
2024-10-08 15:48:23 +00:00
l10n daemon script
b9e9d66fa5 GIT_SILENT made messages (after extraction) 2024-10-08 01:48:18 +00:00
l10n daemon script
107611f8d2 GIT_SILENT made messages (after extraction) 2024-10-07 01:46:54 +00:00
l10n daemon script
d0fc68054f GIT_SILENT Sync po/docbooks with svn 2024-10-06 02:20:27 +00:00
l10n daemon script
9f15d4b3aa GIT_SILENT made messages (after extraction) 2024-10-06 01:48:36 +00:00
TPJ Schikhof
a149100d74 Add unit tests for TelephonyHelper 2024-10-05 05:55:22 +00:00
l10n daemon script
7332b355a4 GIT_SILENT made messages (after extraction) 2024-10-05 01:48:12 +00:00
ShellWen Chen
9cc8051d00 refactor(remotekeyboard): simplify checkRequiredPermissions using streams
This commit simplifies the `checkRequiredPermissions` method in the `RemoteKeyboardPlugin` by using Java
 streams.

The previous implementation used a for loop to iterate over the list of enabled input methods and check if the package name matched the current context. This has been replaced with a more concise stream-based approach using `anyMatch`.
2024-10-04 02:42:19 +00:00
ShellWen Chen
78050a158a refactor(remotekeyboard): use package name from context instead of hard-coded 2024-10-04 02:42:19 +00:00
TPJ Schikhof
a5057df1c8 Migrate EntryItem to Kotlin 2024-10-04 02:40:42 +00:00
TPJ Schikhof
b856bdbb0b Migrate LifecycleHelper to Kotlin 2024-10-03 03:14:21 +00:00
TPJ Schikhof
8cb9a1809d Migrate SettingsFragment to Kotlin 2024-10-03 03:07:41 +00:00
Albert Vaca Cintora
0ffd9cd9dc Release 1.32.5 2024-10-02 08:03:10 +02:00
Albert Vaca Cintora
725b3f1d6a Release 1.32.5 for the Play Store 2024-10-02 07:57:32 +02:00
Albert Vaca Cintora
63d1d15c4f Fix crash on Android 14+
ENABLED_INPUT_METHODS can't be read anymore
2024-10-02 07:56:35 +02:00
TPJ Schikhof
592b8a74a7 Unit testing for the SslHelper methods
(excluding methods involving RsaHelper)
2024-10-02 04:47:48 +00:00
Luca Carlon
38e713f489 Fix access to the Downloads directory on Android 10
On Android 10 the share files feature fails when the default
directory is selected. When selecting a custom directory, the
permission is explicitly asked to the user, which makes the
feature work. When the location is switched back to the default
location, the feature is again broken.

The requestLegacyExternalStorage flag brings back the old
behavior and allows to write in the directory. It should be however
ignored for Android >= 11 according to the docs:

https://developer.android.com/training/data-storage/use-cases#opt-out-in-production-app

From Android 11, the Downlods directory should not need specific permissions.
2024-10-02 04:41:39 +00:00
TPJ Schikhof
bb8649d869 Refactor storage helper and added unit tests 2024-10-02 04:26:23 +00:00
Philip Cohn-Cort
2e82673bbf Regenerate Gradle wrapper files 2024-10-02 03:52:19 +00:00
TPJ Schikhof
7ee33de646 Migrate BackgroundService to Kotlin 2024-10-02 03:51:59 +00:00
Albert Vaca Cintora
65a71696d5 Release 1.32.4 for Play Store without EXTERNAL STORAGE permission 2024-09-28 18:30:40 +02:00
Albert Vaca Cintora
e2aa79a252 Release 1.32.3 2024-09-28 18:26:16 +02:00
Albert Vaca Cintora
1ffcaf076e Bump deps 2024-09-28 18:21:06 +02:00
TPJ Schikhof
854b2a1c9f Migrate PluginFactory to Kotlin 2024-09-28 04:59:56 +00:00
l10n daemon script
8fb545d620 GIT_SILENT made messages (after extraction) 2024-09-27 01:53:54 +00:00
Marko Zajc
db615b82df Fix trusted networks
## Summary
1) Fix the code responsible for loading the trusted network list.
2) The old `#_#` delimiter has been replaced with a less likely NUL character. This requires re-adding trusted networks, so I can revert it if necessary.
3) Ignore incoming identity packets on untrusted devices if they come from an untrusted device.

BUG: 492302

## Test Plan

### Before:
1) Trusted networks were completely broken, an would show variations of `#` and `_` on the list due to a bug in the splitting code.
2) Any network with `#_#` in the SSID - although unlikely - would not be possible to use as a trusted network.
3) The device was still discoverable on an untrusted network by manually refreshing the devices list.

### After:
1) Trusted networks now load the SSID list correctly.
2) Networks with `#_#` in the SSID can be added as trusted networks.
3) The device is no longer discoverable on an untrusted network.
2024-09-21 22:24:46 +00:00
TPJ Schikhof
ee7d4a1f05 Migrate FindRemoteDevicePlugin to Kotlin 2024-09-16 10:24:04 +00:00
TPJ Schikhof
409ef6b579 Migrate PingPlugin to Kotlin 2024-09-16 10:20:43 +00:00
TPJ Schikhof
2c0a9d262e Migrate MockSharedPreference to Kotlin 2024-09-16 10:18:16 +00:00
TPJ Schikhof
2f10f1d0f2 Migrate NsdResolveQueue to Kotlin 2024-09-15 08:07:31 +00:00
l10n daemon script
9f788da478 GIT_SILENT made messages (after extraction) 2024-09-12 01:45:57 +00:00
TPJ Schikhof
ec952b49d9 Migrate LoopbackBackend to Kotlin 2024-09-10 21:22:59 +00:00
TPJ Schikhof
45da75f331 Migrate BackgroundJob(Handler) to Kotlin 2024-09-10 08:35:09 +00:00
Albert Vaca Cintora
283956c107 Bump targetSdk from 33 to 35 2024-09-08 14:35:36 +02:00
l10n daemon script
d605977b91 GIT_SILENT Sync po/docbooks with svn 2024-09-06 02:42:47 +00:00
Albert Vaca Cintora
80cf238354 Add changelog 2024-09-03 12:10:28 +02:00
Albert Vaca Cintora
8ee135b018 Release 1.32.2 2024-09-03 12:05:55 +02:00
Albert Vaca Cintora
2343dbf144 Release 1.32.2 for Play Store without EXTERNAL STORAGE permission 2024-09-03 12:04:38 +02:00
Albert Vaca Cintora
3f53180b1d Unify the check for NativeFileSystem support 2024-09-03 12:03:03 +02:00
Albert Vaca Cintora
0f7af315f5 Bump deps 2024-09-03 12:03:03 +02:00
TPJ Schikhof
7ebac70d47 Migrate DeviceTest to Kotlin 2024-09-02 10:29:16 +00:00
TPJ Schikhof
9037647281 Migrate SafeTextCheckerTest to Kotlin 2024-09-02 10:27:24 +00:00
l10n daemon script
9373587268 GIT_SILENT made messages (after extraction) 2024-09-02 01:46:49 +00:00
TPJ Schikhof
0771415d8f Migrate RsaHelper to Kotlin 2024-08-31 17:38:59 +00:00
TPJ Schikhof
fb0e2cc01d Migrate files helper to Kotlin + add unit tests 2024-08-30 18:02:12 +00:00
TPJ Schikhof
584fb78bb7 Relieve getStorageList() out of it's misery since it's not being used anymore
I was about to migrate this to Kotlin but reasoned it would save some work to remove this first since it's not being used anyway.
2024-08-30 14:29:17 +00:00
l10n daemon script
ae12e3e6fc GIT_SILENT Sync po/docbooks with svn 2024-08-29 02:19:17 +00:00
l10n daemon script
8be80cae3e GIT_SILENT made messages (after extraction) 2024-08-29 01:47:24 +00:00
l10n daemon script
d41ed4d911 GIT_SILENT made messages (after extraction) 2024-08-28 01:57:12 +00:00
l10n daemon script
6f783b54a5 GIT_SILENT made messages (after extraction) 2024-08-27 01:50:35 +00:00
l10n daemon script
1f6d1ea544 GIT_SILENT Sync po/docbooks with svn 2024-08-26 02:33:49 +00:00
l10n daemon script
27737c46f2 GIT_SILENT made messages (after extraction) 2024-08-26 02:00:08 +00:00
l10n daemon script
6b99fe7e7c GIT_SILENT made messages (after extraction) 2024-08-25 01:47:57 +00:00
Adam Liscak
6e59a6241a Certificate Expiry Hadling After 10 Years
Auto reconfiguration of own certificate:

currently:
if kdeconncect loads its certificate and its expired or not effective yet
it generates a new certificate and deletes all remembered devices
(since these will stay unreachable anyways)

previously:
if kdeconncect loads its certificate and its expired or not effective yet
it continues having the same certificate
This brings forth an issue: Other devices would refuse to connect to a device with
an expired or non-effective certificate.

Auto-delete of orphan certificates:

currently:
Devices in kdeconnect's devicelist that have illegal ssl certificates
(expired, not effective yet, empty) get automatically deleted from the
devicelist
previously:
they would just exist forever until the user deletes them
2024-08-24 10:24:34 +00:00
l10n daemon script
7506d32cef GIT_SILENT made messages (after extraction) 2024-08-24 01:47:48 +00:00
l10n daemon script
c35dc4928c GIT_SILENT made messages (after extraction) 2024-08-23 01:47:03 +00:00
l10n daemon script
6070276489 GIT_SILENT Sync po/docbooks with svn 2024-08-22 02:30:41 +00:00
l10n daemon script
9685f7e69a GIT_SILENT made messages (after extraction) 2024-08-22 01:55:16 +00:00
TPJ Schikhof
69495136da Migrate RandomHelper to Kotlin 2024-08-21 18:55:00 +00:00
Mhammad Alloush
5f18cb571d Update MousePadActivity to support doubletap drag
This MR is a continuation of !439 , which changes the default 
behavior of the remote mouse plugin's drag and drop trigger
to be a double-tap to drag, and adds a new SwitchPreference
that toggles between the old (hold to drag) and new behavior.
2024-08-21 18:52:24 +00:00
TPJ Schikhof
ab1b1f7ecc Migrate MediaStoreHelper to Kotlin 2024-08-21 15:06:55 +00:00
l10n daemon script
3f8170eae8 GIT_SILENT made messages (after extraction) 2024-08-20 02:02:39 +00:00
Albert Vaca Cintora
eb6784b626 Release 1.32.1 2024-08-19 01:08:16 +02:00
Albert Vaca Cintora
1beb8d4581 Bump deps 2024-08-18 23:59:04 +02:00
Albert Vaca Cintora
16067d7523 Fix crash 2024-08-18 23:59:04 +02:00
TPJ Schikhof
dea0bb4e1f Migrate trusted network helper to Kotlin 2024-08-18 21:58:07 +00:00
TPJ Schikhof
c9fb81363d Migrate video urls helper to Kotlin
- Migrated code to Kotlin
- Fixed crash
- Added unit tests
2024-08-18 21:54:42 +00:00
l10n daemon script
35e8ea0c4c GIT_SILENT made messages (after extraction) 2024-08-17 01:44:44 +00:00
l10n daemon script
7c5c7933c9 GIT_SILENT made messages (after extraction) 2024-08-16 01:47:25 +00:00
l10n daemon script
0dfa44aeac GIT_SILENT made messages (after extraction) 2024-08-15 01:51:43 +00:00
l10n daemon script
dd527f661c GIT_SILENT made messages (after extraction) 2024-08-14 01:47:34 +00:00
Qaz Cetelic
ed89fb43ed Migrate safe text checker to Kotlin
Functionality is identical and it passes all unit tests
2024-08-12 12:23:12 +00:00
Albert Vaca Cintora
aed2b64416 Release 1.32.0 2024-08-10 14:07:49 +02:00
Albert Vaca Cintora
4bdbb8f74a Bump deps 2024-08-10 14:05:00 +02:00
l10n daemon script
155ebf4fb2 GIT_SILENT made messages (after extraction) 2024-08-08 01:49:26 +00:00
Albert Vaca Cintora
46ad0c62ba Fix typo that caused certs to last 9 years instead of 10 2024-08-06 01:20:02 +02:00
ShellWen Chen
df0f2d651c feat(sftp): notify MediaStore on file changes
This commit adds functionality to notify the MediaStore when files are modified via SFTP. This ensures that
 changes made through SFTP are reflected in the Android media library.

Specifically, the MediaStore is notified after file creation, deletion, copying, renaming, and link creation. Additionally, it is notified after closing a file that was opened for writing. This ensures that the MediaStore is kept up-to-date
 with any changes made to files through SFTP.
2024-08-05 18:44:49 +08:00
l10n daemon script
167e2c7176 GIT_SILENT made messages (after extraction) 2024-08-04 01:50:29 +00:00
Albert Vaca Cintora
906326f837 Fix crashes 2024-08-04 00:16:48 +02:00
l10n daemon script
3c9c49fa87 GIT_SILENT made messages (after extraction) 2024-08-03 01:51:09 +00:00
l10n daemon script
24a6beb600 GIT_SILENT made messages (after extraction) 2024-08-02 01:52:00 +00:00
Albert Vaca Cintora
0775a45316 Release 1.32.0 Beta
Only meant for the Play Store (because of the automatic crash reports),
so no fastlane update and no tag.
2024-07-31 12:43:45 +02:00
ShellWen Chen
90dbdee282 chore: disable SSHD logging due to performance degradation and being very noisy even in development 2024-07-31 10:40:00 +00:00
ShellWen Chen
7d28c52c35 fix: now call stop() of sftp server will do nothing when sshd hasn't been initialized 2024-07-31 10:40:00 +00:00
ShellWen Chen
7686e012c3 feat: add custom author description for ShellWen Chen 2024-07-31 10:40:00 +00:00
ShellWen Chen
2cb9666678 fix: remove "set last modified" codes because it will always failed as SAF doesn't allow it. 2024-07-31 10:40:00 +00:00
ShellWen Chen
0ab4e0d1d2 revert: restore codes that have been changed by mistake 2024-07-31 10:40:00 +00:00
ShellWen Chen
30cc95713f chore: add some comments about FixPosixFilePermissionClassVisitorFactory 2024-07-31 10:40:00 +00:00
ShellWen Chen
ae49aa6456 fix: fix logics in newFileChannel() 2024-07-31 10:40:00 +00:00
ShellWen Chen
89454fcba9 fix: add calls to MediaStoreHelper.indexFile() 2024-07-31 10:40:00 +00:00
ShellWen Chen
5a6453729c refactor: rewrite newFileChannel logics 2024-07-31 10:40:00 +00:00
ShellWen Chen
0706ec1a0b refactor: clean up codes 2024-07-31 10:40:00 +00:00
ShellWen Chen
405e828683 refactor: make changes to SimpleSftpServer 2024-07-31 10:40:00 +00:00
ShellWen Chen
34a78e635e pref: reduce reflection calls 2024-07-31 10:40:00 +00:00
ShellWen Chen
c327c15825 chore: remove outdated comment 2024-07-31 10:40:00 +00:00
ShellWen Chen
6d027ae810 chore: add comments to explain why call PathUtils.setUserHomeFolderResolver() 2024-07-31 10:40:00 +00:00
ShellWen Chen
104013c916 fix: make SafFileSystem not closable 2024-07-31 10:40:00 +00:00
ShellWen Chen
8df1f04141 fix: make IDEA happy 2024-07-31 10:40:00 +00:00
ShellWen Chen
beab3599bf chore: remove dead codes 2024-07-31 10:40:00 +00:00
ShellWen Chen
819d3ea158 chore: fix a mistake in comment 2024-07-31 10:40:00 +00:00
ShellWen Chen
83fd2440ce chore: remove outdated comment 2024-07-31 10:40:00 +00:00
ShellWen Chen
e13451061f pref: Use Java NIO2 impl on Android >= 8.0 2024-07-31 10:40:00 +00:00
ShellWen Chen
e82c0fea84 fix: fix SAF issues before Android 7.0 (SDK Level < 24) 2024-07-31 10:40:00 +00:00
ShellWen Chen
e391750e0e chore: bump sshd core to 2.13.1 2024-07-31 10:40:00 +00:00
ShellWen Chen
6513bb1320 chore: use default signing and key exchange algorithms 2024-07-31 10:40:00 +00:00
ShellWen Chen
0fb6e25682 feat: add SAF support 2024-07-31 10:40:00 +00:00
ShellWen Chen
7fbfc9df90 fix: remove sshd instance when start second time due to sshd can't be start after stop 2024-07-31 10:40:00 +00:00
ShellWen Chen
cd8237d773 fix: use Apache MINA as IO Service of SSHD Core to fix issues when Android SDK < 26 (Android 8.0)
NIO2 is the default IO Service of SSHD Core. But when Android SDK < 26, NIO2 doesn't exists. So we have to use Apache MINA as IO Service to fix this issue.
2024-07-31 10:40:00 +00:00
ShellWen Chen
aaa750bbc6 chore: replace calls to Collections with backport impls instead when Android SDK < 26 (Android 8.0) 2024-07-31 10:40:00 +00:00
ShellWen Chen
3d54da75cc chore: bump mina core to 2.2.3 2024-07-31 10:40:00 +00:00
ShellWen Chen
358584ba6f chore: bump sshd core to 2.12.1
chore: bump sshd core to `2.10.0`

chore: bump sshd core to `2.8.0`

chore: bump sshd core to `2.6.0`

chore: bump sshd core to `2.4.0`

chore: bump sshd core to `2.3.0`

chore: bump sshd core to `2.2.0`

chore: bump sshd core to `2.1.0`

chore: bump sshd core to `2.0.0`

chore: bump sshd core to `1.7.0`
2024-07-31 10:40:00 +00:00
ShellWen Chen
adfab5f0f3 fix: fix a class type cast error by modify bytecode 2024-07-31 10:40:00 +00:00
ShellWen Chen
e37a519e3a refactor: migrate SSHD Core to 1.0.0. SAF is unavailable now. 2024-07-31 10:40:00 +00:00
ShellWen Chen
6783f0a167 refactor: migrate classes to Kotlin
refactor: migrate `AndroidSshFile` to Kotlin
refactor: migrate `DHG14_256` to Kotlin
refactor: migrate `RootFile` to Kotlin
refactor: migrate `SftpPlugin` to Kotlin
refactor: migrate `SignatureRSASHA256` to Kotlin
refactor: migrate `SimpleSftpServer` to Kotlin
refactor: migrate `StoragePreference` to Kotlin
refactor: migrate `StoragePreferenceDialogFragment` to Kotlin
2024-07-31 10:40:00 +00:00
l10n daemon script
6d78fe749a GIT_SILENT Sync po/docbooks with svn 2024-07-30 02:23:25 +00:00
l10n daemon script
2120c7967e GIT_SILENT Sync po/docbooks with svn 2024-07-29 02:22:45 +00:00
l10n daemon script
de861ce781 GIT_SILENT Add new file (after extraction) 2024-07-29 01:50:25 +00:00
l10n daemon script
e222937736 GIT_SILENT made messages (after extraction) 2024-07-26 01:44:21 +00:00
Krut Patel
e289811097 mpris-receiver: Send album art
Implementation of sending album art from phone to PC.

Complementary MR for the PC-side: https://invent.kde.org/network/kdeconnect-kde/-/merge_requests/541

Fixes https://bugs.kde.org/show_bug.cgi?id=422136
2024-07-22 20:51:08 +00:00
l10n daemon script
067a000b2b GIT_SILENT made messages (after extraction) 2024-07-14 01:42:40 +00:00
l10n daemon script
f9d05824a7 GIT_SILENT Sync po/docbooks with svn 2024-07-11 02:17:19 +00:00
l10n daemon script
d753f1eea4 GIT_SILENT Add new file (after extraction) 2024-07-11 01:43:55 +00:00
l10n daemon script
3c81b527eb GIT_SILENT made messages (after extraction) 2024-07-08 01:44:35 +00:00
l10n daemon script
96147bf6df GIT_SILENT made messages (after extraction) 2024-07-07 01:45:40 +00:00
l10n daemon script
8b33ce64a4 GIT_SILENT made messages (after extraction) 2024-07-06 01:47:59 +00:00
l10n daemon script
73fdd4b47e GIT_SILENT Sync po/docbooks with svn 2024-06-27 02:22:33 +00:00
l10n daemon script
680e404d05 GIT_SILENT made messages (after extraction) 2024-06-22 01:53:10 +00:00
l10n daemon script
aae6f1a7e9 GIT_SILENT made messages (after extraction) 2024-06-20 01:49:27 +00:00
Albert Vaca Cintora
5cda1ceb0c Catch a NPE that I'm not sure how to avoid 2024-06-13 12:50:09 +02:00
Albert Vaca Cintora
7ed4efedc3 Fix SecurityException if the notifications permission was revoked 2024-06-13 12:07:06 +02:00
Midori Kochiya
96ecd620cf Add support for Direct Share targets
As described in https://developer.android.com/training/sharing/direct-share-targets.

This makes connected devices with `SharePlugin` enabled show
up in Android's Sharesheet and can be directly shared to.
2024-06-11 14:01:03 +00:00
Albert Vaca Cintora
f344586fb6 Release 1.31.1 2024-06-10 15:07:25 +02:00
Albert Vaca Cintora
d9755f8438 Remove support for Android TV launchers
This requires us to publish the app as an App Bundle, however we publish it
as an APK.
2024-06-10 15:04:34 +02:00
Albert Vaca Cintora
659ed25213 Release 1.31.0 2024-06-10 14:55:11 +02:00
Albert Vaca Cintora
ca6ea5cb1a Simplify for loop 2024-06-10 13:57:20 +02:00
l10n daemon script
4e1e2931e2 GIT_SILENT made messages (after extraction) 2024-06-08 01:49:38 +00:00
Albert Vaca Cintora
711eef97e7 Handle identity packets received because of existing device renames 2024-06-06 08:16:03 +02:00
Albert Vaca Cintora
962dc50617 Added a fixme and stop removing devices 2024-06-06 07:55:04 +02:00
Albert Vaca Cintora
1ecd6b67c2 Bump deps 2024-06-06 07:55:04 +02:00
l10n daemon script
72ad997b53 GIT_SILENT made messages (after extraction) 2024-06-05 02:06:14 +00:00
Albert Vaca Cintora
8352091ffd Add javadoc for Device fields 2024-06-04 20:30:48 +02:00
Albert Vaca Cintora
1195cf5c4e Make NetworkPacketWithCallback a data class as per code review 2024-06-04 20:21:20 +02:00
Albert Vaca Cintora
f03c86c4ae Make null check and (de)initialization atomic 2024-06-04 20:05:58 +02:00
Albert Vaca Cintora
4ae6e50020 Remove DevicePacketQueue, use a IO coroutine to send packets 2024-06-04 19:57:59 +02:00
Albert Vaca Cintora
66ea01ad29 Remove unnecessary testOptions 2024-06-04 19:57:06 +02:00
l10n daemon script
9a8a99a5a7 GIT_SILENT made messages (after extraction) 2024-05-31 01:57:48 +00:00
l10n daemon script
5578f9172b GIT_SILENT Sync po/docbooks with svn 2024-05-29 02:52:15 +00:00
l10n daemon script
860504fbbf GIT_SILENT made messages (after extraction) 2024-05-29 02:07:46 +00:00
l10n daemon script
6affee7f8d GIT_SILENT made messages (after extraction) 2024-05-28 01:43:46 +00:00
l10n daemon script
2cf0c354cd GIT_SILENT made messages (after extraction) 2024-05-27 01:46:45 +00:00
l10n daemon script
9689191847 GIT_SILENT made messages (after extraction) 2024-05-26 01:42:43 +00:00
l10n daemon script
ebe3cb4c4e GIT_SILENT Sync po/docbooks with svn 2024-05-25 02:24:40 +00:00
l10n daemon script
afa832843f GIT_SILENT made messages (after extraction) 2024-05-25 01:47:56 +00:00
l10n daemon script
d92a8afdf4 GIT_SILENT made messages (after extraction) 2024-05-24 01:48:58 +00:00
l10n daemon script
56577bcc88 GIT_SILENT made messages (after extraction) 2024-05-23 01:45:20 +00:00
l10n daemon script
8283b8267f GIT_SILENT made messages (after extraction) 2024-05-22 01:48:29 +00:00
Albert Vaca Cintora
ca4a6eb06a Update Jetpack Compose compiler to 2.0
This is the new way of including the Jetpack Compose compiler [1] starting from Kotlin 2.0


[1] https://android-developers.googleblog.com/2024/04/jetpack-compose-compiler-moving-to-kotlin-repository.html
2024-05-21 09:46:23 +00:00
l10n daemon script
8892750809 GIT_SILENT made messages (after extraction) 2024-05-21 01:52:23 +00:00
Albert Vaca Cintora
3378c5d428 I think this can be removed now 2024-05-20 19:45:26 +02:00
Albert Vaca Cintora
2cfb506626 Do not minify on debug 2024-05-20 19:45:26 +02:00
Albert Vaca Cintora
5e1b47db63 Do not mark device as open, it's actually not needed 2024-05-20 19:45:26 +02:00
Albert Vaca Cintora
f29f056ef7 Remove the public "pairingCallback" variable
It was used by mistake in DeviceFragment inside a device.apply block
because it was shadowing the pairingCallback defined there.

Bug introduced in 23701bc4ae
2024-05-20 19:45:20 +02:00
Albert Vaca Cintora
0d0672e59f Same in LanLinkProvider 2024-05-19 15:34:02 +02:00
Albert Vaca Cintora
efda9b95ab Check packet type inside of isValidIdentityPacket 2024-05-19 15:32:28 +02:00
Albert Vaca Cintora
186236b93a Do not store connectivityType 2024-05-19 13:38:56 +02:00
Albert Vaca Cintora
f7ea30dd7d Use the plugin context and not the device context 2024-05-19 13:37:26 +02:00
Albert Vaca Cintora
1bd5b12619 Use applicationContext as context for Device
Co-authored-by: ShellWen Chen <me@shellwen.com>
2024-05-19 13:32:58 +02:00
Albert Vaca Cintora
23701bc4ae Migrate Device to Kotlin
Co-authored-by: ShellWen Chen <me@shellwen.com>
2024-05-19 13:31:19 +02:00
ShellWen Chen
5151ed3d96 refactor: mark getIcon() as notnull, add @DrawableRes to toDrawableId() 2024-05-19 13:29:18 +02:00
Albert Vaca Cintora
4c0acbb71c Always display the verification key when pairing 2024-05-19 10:03:04 +00:00
Albert Vaca Cintora
440f1d4fa3 Filter device name
Following the spec: https://invent.kde.org/network/kdeconnect-meta/-/blob/master/protocol.md?ref_type=heads#kdeconnectidentity
2024-05-19 10:02:28 +00:00
l10n daemon script
e8f7e86b35 GIT_SILENT made messages (after extraction) 2024-05-19 01:47:18 +00:00
Albert Vaca Cintora
343270c793 Shorten pairing key to 8 chars
The previous key was 64 freakin characters long which made it more prone
to being ignored, and thus less secure.
2024-05-18 20:40:54 +00:00
Albert Vaca Cintora
27075e89be Remove unneeded null check 2024-05-17 10:49:19 +02:00
l10n daemon script
768b02c173 GIT_SILENT made messages (after extraction) 2024-05-16 02:07:51 +00:00
Albert Vaca Cintora
ef760a3628 Revert "refactor: migrate DevicePacketQueue to Kotlin Coroutine"
This reverts merge request !431
2024-05-13 21:53:15 +00:00
Albert Vaca Cintora
3e96d5ecd3 Remove leftover mock line 2024-05-13 12:34:19 +02:00
Albert Vaca Cintora
c6dbadce21 Upgrade to Mockito 5, remove PowerMock and update test
PowerMock is no longer maintained and is only compatible with Mockito 3.
However, modern Mockito supports mocking static methods, so PowerMock is
no longer needed (after adjusting the tests a bit).
2024-05-13 12:31:59 +02:00
l10n daemon script
b985aeb18e GIT_SILENT made messages (after extraction) 2024-05-13 01:48:25 +00:00
Albert Vaca Cintora
dc2c2e71df Fix test by removing unused mocks 2024-05-12 22:27:32 +02:00
Albert Vaca Cintora
e1a7b476d1 Migrate DeviceHelper to Kotlin 2024-05-12 22:27:32 +02:00
Albert Vaca Cintora
5dad852ece Bump deps 2024-05-12 22:26:54 +02:00
Albert Vaca Cintora
9ca1495dd3 Fix banner icon 2024-05-12 21:28:31 +02:00
Philip Cohn-Cort
eeeb5678c1 tv: Greatly improve focus behavior on device list 2024-05-12 21:28:06 +02:00
Philip Cohn-Cort
769f054355 tv: Allow launching on TV devices 2024-05-12 21:28:06 +02:00
Philip Cohn-Cort
235c67fd82 tv: Add new banner image for the launcher 2024-05-12 21:28:06 +02:00
Albert Vaca Cintora
862bd43c63 Fix warning 2024-05-12 16:06:38 +02:00
Albert Vaca Cintora
a82b6bbae0 Remove some depreacated calls in EasterEggActivity 2024-05-12 16:03:27 +02:00
Albert Vaca Cintora
2803024046 Bump Gradle version 2024-05-12 15:50:19 +02:00
l10n daemon script
01bc5490f2 GIT_SILENT Sync po/docbooks with svn 2024-05-12 02:38:29 +00:00
l10n daemon script
994a71f7cd GIT_SILENT made messages (after extraction) 2024-05-12 01:56:34 +00:00
l10n daemon script
0eb79e0053 GIT_SILENT made messages (after extraction) 2024-05-09 01:51:50 +00:00
l10n daemon script
00387ca01d GIT_SILENT made messages (after extraction) 2024-05-08 01:52:04 +00:00
l10n daemon script
7dba06cbb6 GIT_SILENT made messages (after extraction) 2024-05-07 01:44:25 +00:00
l10n daemon script
ae60cbbf74 GIT_SILENT Sync po/docbooks with svn 2024-05-06 02:30:22 +00:00
l10n daemon script
0d4951f152 GIT_SILENT made messages (after extraction) 2024-05-05 01:44:14 +00:00
l10n daemon script
5fb87d598e GIT_SILENT Sync po/docbooks with svn 2024-05-04 02:38:12 +00:00
l10n daemon script
b65c1aae8f GIT_SILENT made messages (after extraction) 2024-05-04 01:56:54 +00:00
Albert Vaca Cintora
3d166e6d4b Offer to "continue playing" media on this device after pausing
Based on the MR !249

Co-authored-by: Alex Gravenor <blazingkin@gmail.com>
2024-05-02 16:18:33 +02:00
Albert Vaca Cintora
411bcc3960 Added a comment 2024-05-02 12:19:08 +02:00
Albert Vaca Cintora
eb5719d9a2 Improve security of SFTP server against timing attacks
Use a constant time string comparison for password auth.
2024-05-02 10:13:19 +00:00
Albert Vaca Cintora
37246f8575 Fix not loading any plugins when pairing with MacOS 2024-05-02 10:12:13 +00:00
l10n daemon script
6728ca472c GIT_SILENT made messages (after extraction) 2024-05-01 01:41:30 +00:00
l10n daemon script
d19595fc3b GIT_SILENT made messages (after extraction) 2024-04-24 01:55:57 +00:00
l10n daemon script
f3c23c5b8e GIT_SILENT Sync po/docbooks with svn 2024-04-22 02:41:36 +00:00
l10n daemon script
ce4f6ca9ef GIT_SILENT made messages (after extraction) 2024-04-22 01:54:24 +00:00
Rob Emery
f21fe2eb1b Removing accidental newline
Signed-off-by: Rob Emery <git@mintsoft.net>
2024-04-21 21:18:00 +00:00
Rob Emery
105a733028 When we are denied bluetooth, we can switch it off as well so it doesn't try again
Signed-off-by: Rob Emery <git@mintsoft.net>
2024-04-21 21:18:00 +00:00
Rob Emery
9df15bf9ca If the user revokes the "nearby devices" permission from KDEConnect, previously this
would throw a SecurityException and cause the app to crash. It will now ignore this
condition and keep using the other connection methods (i.e. LANProvider). Toggling the
Enable Bluetooth option in the settings will fix the permissions

Signed-off-by: Rob Emery <git@mintsoft.net>
2024-04-21 21:18:00 +00:00
l10n daemon script
d53fcdd546 GIT_SILENT Sync po/docbooks with svn 2024-04-21 02:27:21 +00:00
l10n daemon script
fa125ed0ac GIT_SILENT made messages (after extraction) 2024-04-21 01:43:30 +00:00
l10n daemon script
28ebd94517 GIT_SILENT Sync po/docbooks with svn 2024-04-20 02:29:18 +00:00
l10n daemon script
d0efb70bcf GIT_SILENT made messages (after extraction) 2024-04-20 01:44:45 +00:00
l10n daemon script
5441b0b5d6 GIT_SILENT made messages (after extraction) 2024-04-19 01:46:55 +00:00
l10n daemon script
0a354695cc GIT_SILENT made messages (after extraction) 2024-04-18 01:36:27 +00:00
l10n daemon script
4bbe6c2e55 GIT_SILENT Sync po/docbooks with svn 2024-04-17 02:30:54 +00:00
Vala Zadeh
80106ccb81 Add option to cache URLs shared to unreachable devices 2024-04-16 07:10:42 +00:00
Albert Vaca Cintora
fb327ae35e Fixes from code review 2024-04-15 18:22:26 +02:00
Albert Vaca Cintora
ffa0049c09 Remove colors from theme
We had a mix of specific colors and theme-based Material You colors.
This aims to remove any hardcoded color so the app only uses the colors
from the current theme.
2024-04-15 18:01:54 +02:00
l10n daemon script
afb45416b1 GIT_SILENT Sync po/docbooks with svn 2024-04-15 02:21:17 +00:00
ShellWen Chen
295dc7b42a refactor: migrate DevicePacketQueue to Kotlin Coroutine 2024-04-14 23:04:55 +00:00
l10n daemon script
0de545773d GIT_SILENT Sync po/docbooks with svn 2024-04-14 02:22:27 +00:00
l10n daemon script
7a0e38445b GIT_SILENT Sync po/docbooks with svn 2024-04-13 02:28:20 +00:00
Albert Vaca Cintora
40b1cdabc8 Safer gitignore 2024-04-12 09:25:44 +02:00
Albert Vaca Cintora
28b1e7d96a Gitignore release dir 2024-04-12 09:25:44 +02:00
Albert Vaca Cintora
2f922f282a Bump deps 2024-04-12 09:25:44 +02:00
Albert Vaca Cintora
6d431c5797 Add packet type information when an OOM happens 2024-04-12 09:25:44 +02:00
l10n daemon script
175ee9b011 GIT_SILENT Sync po/docbooks with svn 2024-04-12 02:26:43 +00:00
l10n daemon script
8a9ac32882 GIT_SILENT made messages (after extraction) 2024-04-12 01:42:12 +00:00
Albert Vaca Cintora
9065867c4a Release 1.30.1 2024-04-11 23:45:56 +02:00
Albert Vaca Cintora
47e0cca3c6 Migrate SMSHelper to Kotlin 2024-04-11 21:17:02 +00:00
Albert Vaca Cintora
db33b13343 Fix crash due to passing null as a non-null arg 2024-04-11 22:55:37 +02:00
Albert Vaca Cintora
45dfbae63f Do not make unnecessary stuff public in NetworkPacket 2024-04-11 22:48:23 +02:00
l10n daemon script
8268358b5a GIT_SILENT Sync po/docbooks with svn 2024-04-11 02:27:34 +00:00
l10n daemon script
3aa7d249b3 GIT_SILENT Sync po/docbooks with svn 2024-04-10 02:29:45 +00:00
l10n daemon script
b3f96b136c GIT_SILENT Sync po/docbooks with svn 2024-04-09 02:28:48 +00:00
Albert Vaca Cintora
e2196b35fe Fix remote mouse: you can drag but not drop in Plasma Wayland 2024-04-08 21:00:06 +00:00
l10n daemon script
6c7700f6c8 GIT_SILENT Sync po/docbooks with svn 2024-04-08 02:28:11 +00:00
ShellWen Chen
7f67a80bda refactor: migrate PairingHandler to Kotlin 2024-04-07 18:16:39 +00:00
ShellWen Chen
5ce0c1ccf8 refactor: migrate AppsHelper to Kotlin
Remove `appIconLookup()` as not used
2024-04-07 13:52:03 +00:00
l10n daemon script
c2e1a93f68 GIT_SILENT Sync po/docbooks with svn 2024-04-07 02:28:33 +00:00
ShellWen Chen
3e6329c64e refactor: migrate ThemeUtil to Kotlin
Migrate `ThemeUtil` into Kotlin. It was already tested.
2024-04-06 22:17:54 +00:00
Albert Vaca Cintora
10543815c9 Release 1.30.0 2024-04-06 16:54:43 +02:00
Albert Vaca Cintora
af50a03676 Bump deps 2024-04-06 16:46:27 +02:00
ShellWen Chen
05cdbf98d7 refactor: migrate NetworkPacket to Kotlin 2024-04-06 11:20:17 +00:00
Albert Vaca Cintora
c6cb1a54e5 Fix crash when activity is recreated
Parameter specified as non-null is null: method
org.kde.kdeconnect.Plugins.MprisPlugin.MprisNowPlayingFragment$connectToPlugin$2$1$1.onItemSelected,
parameter arg1
2024-04-05 13:29:50 +02:00
l10n daemon script
1abb85c791 GIT_SILENT Sync po/docbooks with svn 2024-04-05 02:26:06 +00:00
l10n daemon script
842348efef GIT_SILENT Sync po/docbooks with svn 2024-04-04 02:30:17 +00:00
ShellWen Chen
0d735eafc3 refactor: migrate Plugin abstract class to Kotlin 2024-04-03 19:22:29 +00:00
ShellWen Chen
9f15a9a3ab refactor: migrate StartActivityAlertDialogFragment to Kotlin 2024-04-01 16:42:49 +00:00
ShellWen Chen
9a196543ff refactor: migrate TrustedNetworksActivity to Kotlin 2024-04-01 16:39:56 +00:00
ShellWen Chen
29c4fe3f8d feat: allow disable minify when build debug package 2024-04-01 16:35:16 +00:00
Marx Zhu
91867481a8 fix: change clipboard content when content is really in NetworkPacket 2024-03-31 14:47:49 +00:00
ShellWen Chen
eed7cad329 refactor: migrate KdeConnect to Kotlin
Migrate `KdeConnect` Application class into Kotlin. Already tested.
2024-03-31 01:10:09 +00:00
ShellWen Chen
66877d6730 refactor: migrate DeviceStats to Kotlin 2024-03-30 20:08:30 +00:00
ShellWen Chen
0a2080fdcd refactor: migrate KdeConnectBroadcastReceiver to Kotlin 2024-03-28 03:32:46 +08:00
ShellWen Chen
e5eb61fd54 refactor: fix API change of startActivityAndCollapse
See also: https://developer.android.com/reference/android/service/quicksettings/TileService#startActivityAndCollapse(android.content.Intent)
2024-03-26 20:07:13 +00:00
ShellWen Chen
bed6fe2c55 feat: Add "ShellWen Chen" into AboutData.authors 2024-03-26 20:06:54 +00:00
Simon Redman
93e4f43198 Use allowed CI image
## Summary

A recent (couple of weeks ago?) change to the Invent policies requires that we use a docker image from an allow list.

The cleanest fix is to just use the Ubuntu base image and install the JDK, which is approximately what we had before.

We considered the Sysadmin Android image (https://invent.kde.org/sysadmin/ci-images/-/blob/master/android-qt66/Dockerfile?ref_type=heads), but we use a newer version of the SDK tools and a newer version of the JDK, at which point we may as well just install those since those are the only dependencies. We could consider building another custom docker image in the future if we see value to doing so.

## Test Plan

### Before:

CI fails with:

```
ERROR: The "eclipse-temurin:17-jdk-focal" image is not present on list of allowed images:
- invent-registry.kde.org/sysadmin/ci-images/*:*
- ubuntu:*
- debian:*
- fedora:*
- centos:*
- opensuse/*:*
- python:*
- ruby:*
- fsfe/reuse:*
- quay.io/podman/stable:*
```

### After:

Build passes and drops .apk
2024-03-25 22:24:43 +00:00
l10n daemon script
edbe59a2be GIT_SILENT made messages (after extraction) 2024-03-25 02:00:33 +00:00
l10n daemon script
cf5000accf GIT_SILENT made messages (after extraction) 2024-03-24 01:39:27 +00:00
ShellWen Chen
bfd147787c chore: migrate BatteryPlugin to Kotlin 2024-03-23 11:33:44 +00:00
ShellWen Chen
828e35103a chore: migrate MprisPlugin to Kotlin 2024-03-22 23:45:59 +08:00
ShellWen Chen
8f2572ddec chore: intro kapt
Kapt, short for Kotlin Annotation Processing Tool, serves as a replacement for annotationProcessor in Kotlin projects. It enables annotation processing in Kotlin by compiling Kotlin code into Java stubs, which are then processed as regular Java code. This allows for seamless integration of annotation processing in Kotlin projects, including handling existing Java code.
2024-03-22 13:43:18 +08:00
ShellWen Chen
e35382815d fix: Correct gitlab link and typos
Replace `https://invent.kde.org/kde/kdeconnect-android/` with `https://invent.kde.org/network/kdeconnect-android/`.
Correct some typos.
2024-03-18 13:03:45 +08:00
l10n daemon script
02a3adac70 GIT_SILENT Sync po/docbooks with svn 2024-03-18 02:47:53 +00:00
l10n daemon script
917d21ec9e GIT_SILENT made messages (after extraction) 2024-03-18 02:00:24 +00:00
l10n daemon script
2b14702097 GIT_SILENT Sync po/docbooks with svn 2024-03-17 02:46:19 +00:00
l10n daemon script
e132cf7d03 GIT_SILENT Sync po/docbooks with svn 2024-03-16 02:53:30 +00:00
l10n daemon script
103709c4f2 GIT_SILENT made messages (after extraction) 2024-03-16 02:03:42 +00:00
l10n daemon script
9611d878c8 GIT_SILENT Sync po/docbooks with svn 2024-03-15 02:46:25 +00:00
l10n daemon script
61482c7dc9 GIT_SILENT Sync po/docbooks with svn 2024-03-14 02:47:38 +00:00
l10n daemon script
52ec889c88 GIT_SILENT made messages (after extraction) 2024-03-11 01:35:11 +00:00
l10n daemon script
3b1e478b9d GIT_SILENT Sync po/docbooks with svn 2024-03-10 02:45:37 +00:00
l10n daemon script
32b3a32ad3 GIT_SILENT made messages (after extraction) 2024-03-10 01:58:27 +00:00
l10n daemon script
7f6dde6ffe GIT_SILENT made messages (after extraction) 2024-03-08 01:34:58 +00:00
l10n daemon script
11d414be4a GIT_SILENT made messages (after extraction) 2024-03-07 01:33:46 +00:00
l10n daemon script
1b14fcd932 GIT_SILENT made messages (after extraction) 2024-03-05 01:35:12 +00:00
l10n daemon script
b38faa091b GIT_SILENT made messages (after extraction) 2024-03-04 01:36:00 +00:00
Julius Künzel
77f0e4b512 GIT_SILENT Set tag for CI runner 2024-03-03 22:52:07 +00:00
Albert Vaca Cintora
d1752ba53d Rename slideshow remote to presentation remote
To match the desktop app
2024-03-03 21:21:37 +01:00
l10n daemon script
3433c84b82 GIT_SILENT made messages (after extraction) 2024-03-03 01:43:51 +00:00
l10n daemon script
61ed40f55f GIT_SILENT made messages (after extraction) 2024-03-02 01:37:22 +00:00
Albert Vaca Cintora
671608d074 Rename composable KdeTopAppBar file 2024-03-02 02:00:27 +01:00
Albert Vaca Cintora
3aacc07209 Remove redundant theme indications 2024-03-02 02:00:27 +01:00
Albert Vaca Cintora
cf4d71eb97 Remove deprecated Mdc3 library 2024-03-02 02:00:27 +01:00
Albert Vaca Cintora
423c57b71e Bump dependencies 2024-03-02 01:59:34 +01:00
Albert Vaca Cintora
2cd88b56da Fields can be local variables 2024-03-01 23:48:31 +01:00
l10n daemon script
bcfacc0c34 GIT_SILENT Sync po/docbooks with svn 2024-03-01 02:47:57 +00:00
Albert Vaca Cintora
8ffee90255 Accessibility improvements when using a screen reader
Fixes based on the report done by HAN University of Applied Sciences.
2024-03-01 00:18:02 +00:00
l10n daemon script
47fe781685 GIT_SILENT Sync po/docbooks with svn 2024-02-29 02:15:05 +00:00
l10n daemon script
fe17400bc6 GIT_SILENT Add new file (after extraction) 2024-02-27 01:37:48 +00:00
l10n daemon script
bc541ed224 GIT_SILENT made messages (after extraction) 2024-02-27 01:37:44 +00:00
l10n daemon script
9e93d932d8 GIT_SILENT made messages (after extraction) 2024-02-25 01:44:03 +00:00
Albert Vaca Cintora
3bacbb3211 Bump dependencies 2024-02-20 21:46:36 +01:00
l10n daemon script
9106df7c60 GIT_SILENT made messages (after extraction) 2024-02-19 01:41:57 +00:00
Simon Redman
0289416345 Initialize mostRecentTimestamp in SMSPlugin constructor 2024-02-12 16:49:50 -05:00
Aditya Mehra
c8d940a71e Use threadhelper for handling request for all conversations in sms plugin 2024-02-12 16:49:50 -05:00
l10n daemon script
d5e1abd22b GIT_SILENT made messages (after extraction) 2024-02-10 01:52:29 +00:00
l10n daemon script
0fe70a9af3 GIT_SILENT made messages (after extraction) 2024-02-09 01:43:49 +00:00
l10n daemon script
c7831e1d1a GIT_SILENT Sync po/docbooks with svn 2024-02-08 02:18:17 +00:00
l10n daemon script
34d1307da1 GIT_SILENT Sync po/docbooks with svn 2024-02-07 02:11:01 +00:00
l10n daemon script
433326f4fd GIT_SILENT Sync po/docbooks with svn 2024-02-06 02:49:12 +00:00
l10n daemon script
298bd4e246 GIT_SILENT made messages (after extraction) 2024-02-06 01:59:59 +00:00
l10n daemon script
60aeca4e95 GIT_SILENT Sync po/docbooks with svn 2024-02-05 02:39:45 +00:00
l10n daemon script
81a732fccb GIT_SILENT made messages (after extraction) 2024-02-03 01:40:38 +00:00
l10n daemon script
fa0ae48efd GIT_SILENT Sync po/docbooks with svn 2024-02-01 02:15:22 +00:00
l10n daemon script
498a5a0c11 GIT_SILENT made messages (after extraction) 2024-01-31 01:44:37 +00:00
l10n daemon script
8de10a6db0 GIT_SILENT made messages (after extraction) 2024-01-30 01:39:19 +00:00
l10n daemon script
8eb0585945 GIT_SILENT Sync po/docbooks with svn 2024-01-29 02:15:15 +00:00
l10n daemon script
8800281e5d GIT_SILENT made messages (after extraction) 2024-01-29 01:35:54 +00:00
l10n daemon script
b56ad6b4b6 GIT_SILENT made messages (after extraction) 2024-01-28 01:39:45 +00:00
l10n daemon script
5bbf917e34 GIT_SILENT made messages (after extraction) 2024-01-26 01:39:07 +00:00
l10n daemon script
3583ccffd4 GIT_SILENT made messages (after extraction) 2024-01-23 01:38:46 +00:00
l10n daemon script
6dd476f9b2 GIT_SILENT Sync po/docbooks with svn 2024-01-22 02:48:04 +00:00
l10n daemon script
98fb72254e GIT_SILENT made messages (after extraction) 2024-01-22 01:58:28 +00:00
l10n daemon script
b8442900b0 GIT_SILENT made messages (after extraction) 2024-01-21 01:36:27 +00:00
l10n daemon script
e0041708df GIT_SILENT made messages (after extraction) 2024-01-20 01:36:12 +00:00
Matteo Princisgh
3cacafad29 Add scroll sensitivity option for MousePadPlugin
Added a seekbar to adjust the scrolling speed of the touchpad

BUG: 407293
2024-01-18 22:15:24 +00:00
Albert Vaca Cintora
7ffc6a742c Bump Gradle and AGP 2024-01-16 11:38:45 +01:00
l10n daemon script
4168afd711 GIT_SILENT Sync po/docbooks with svn 2024-01-15 02:14:22 +00:00
Rob Emery
576ce4d651 Converting Bluetooth Backend to Kotlin
As requested in !399, I've converted this to Kotlin and done a first refactor through
2024-01-14 23:04:56 +00:00
l10n daemon script
06f31fbc81 GIT_SILENT Sync po/docbooks with svn 2024-01-14 02:48:51 +00:00
l10n daemon script
d321afd968 GIT_SILENT made messages (after extraction) 2024-01-13 01:46:20 +00:00
l10n daemon script
6e4a5c367b GIT_SILENT Sync po/docbooks with svn 2024-01-08 01:22:25 +00:00
l10n daemon script
4f45b09d89 GIT_SILENT Add new file (after extraction) 2024-01-08 00:42:02 +00:00
l10n daemon script
d67d3efa9e GIT_SILENT made messages (after extraction) 2024-01-08 00:41:57 +00:00
l10n daemon script
50cddc50ad GIT_SILENT Sync po/docbooks with svn 2024-01-07 01:33:23 +00:00
l10n daemon script
1d79eea3d2 GIT_SILENT Sync po/docbooks with svn 2024-01-01 01:21:22 +00:00
l10n daemon script
654c88e64f GIT_SILENT Sync po/docbooks with svn 2023-12-31 01:33:21 +00:00
l10n daemon script
f2b7e70125 GIT_SILENT made messages (after extraction) 2023-12-29 00:41:21 +00:00
l10n daemon script
22ffd8adb4 GIT_SILENT made messages (after extraction) 2023-12-28 00:41:23 +00:00
l10n daemon script
b64d1d6062 GIT_SILENT Sync po/docbooks with svn 2023-12-24 01:36:08 +00:00
l10n daemon script
a427964c20 GIT_SILENT Sync po/docbooks with svn 2023-12-22 01:23:30 +00:00
l10n daemon script
061be3bb68 GIT_SILENT Sync po/docbooks with svn 2023-12-21 01:37:32 +00:00
l10n daemon script
984aaf7a7a GIT_SILENT Sync po/docbooks with svn 2023-12-18 01:36:50 +00:00
l10n daemon script
d75534aa4d GIT_SILENT made messages (after extraction) 2023-12-16 00:41:47 +00:00
l10n daemon script
edab18c98b GIT_SILENT Sync po/docbooks with svn 2023-12-10 01:36:14 +00:00
l10n daemon script
fe0b92d85f GIT_SILENT Add new file (after extraction) 2023-12-10 00:41:59 +00:00
l10n daemon script
a943d79e2a GIT_SILENT made messages (after extraction) 2023-12-10 00:41:54 +00:00
l10n daemon script
3f44e3e94e GIT_SILENT Sync po/docbooks with svn 2023-12-09 01:23:40 +00:00
l10n daemon script
facac2fc04 GIT_SILENT Add new file (after extraction) 2023-12-09 00:41:40 +00:00
l10n daemon script
bc3a53df47 GIT_SILENT made messages (after extraction) 2023-12-09 00:41:35 +00:00
l10n daemon script
087c7a9d18 GIT_SILENT made messages (after extraction) 2023-12-07 00:42:02 +00:00
l10n daemon script
1ca1803d6f GIT_SILENT made messages (after extraction) 2023-12-05 00:41:26 +00:00
l10n daemon script
f668e2d00d GIT_SILENT made messages (after extraction) 2023-12-01 00:41:32 +00:00
l10n daemon script
cc852261ff GIT_SILENT Sync po/docbooks with svn 2023-11-29 01:24:31 +00:00
l10n daemon script
0188665606 GIT_SILENT made messages (after extraction) 2023-11-29 00:42:22 +00:00
l10n daemon script
04fce9d943 GIT_SILENT Sync po/docbooks with svn 2023-11-28 01:22:52 +00:00
l10n daemon script
eca3b380c7 GIT_SILENT made messages (after extraction) 2023-11-28 00:40:57 +00:00
l10n daemon script
0e23f54439 GIT_SILENT Sync po/docbooks with svn 2023-11-26 01:37:32 +00:00
l10n daemon script
57235898f0 GIT_SILENT made messages (after extraction) 2023-11-26 00:41:55 +00:00
l10n daemon script
d2dce4d481 GIT_SILENT made messages (after extraction) 2023-11-24 00:42:08 +00:00
Luigi Toscano
208c8c9dff Fix string: language teams are not national teams
Languages and nations don't always share the same boundaries.
2023-11-22 12:26:18 +01:00
l10n daemon script
6d6438d258 GIT_SILENT Sync po/docbooks with svn 2023-11-20 01:36:58 +00:00
l10n daemon script
9487d17e9d GIT_SILENT Sync po/docbooks with svn 2023-11-19 01:33:01 +00:00
l10n daemon script
6f3787d382 GIT_SILENT made messages (after extraction) 2023-11-19 00:42:18 +00:00
Rob Emery
21df2be6a2 Testing under Android 8.1.0 the SERVICE_UUID is "backwards" i.e. flipped byte order
I'm not sure why and I've not found anything documented for this yet, but if we
flip the UUID and compare, it connects to a laptop fine and functions as well as
Android 13
2023-11-17 22:52:20 +00:00
Rob Emery
19ec81eec4 Working bluetooth implementation 2023-11-17 22:52:20 +00:00
Philip Cohn-Cort
22b6427a18 Match SDK versions in CI with current requirements
## Summary

This fixes execution on gitlab. The newer version of `sdkmanager` has
different expectations, so we now create a directory for the SDK first
and move `cmdline-tools` into that.

Other changes:
- More inline comments
- Cmdline tools (like sdkmanager) added to path
- Platform tools (like adb) removed from path
- 'patcher' is no longer installed
2023-11-17 16:00:31 +00:00
l10n daemon script
f16981ffbb GIT_SILENT made messages (after extraction) 2023-11-14 00:42:12 +00:00
l10n daemon script
4aa83c021a GIT_SILENT Sync po/docbooks with svn 2023-11-11 01:28:48 +00:00
l10n daemon script
0767d7729e GIT_SILENT made messages (after extraction) 2023-11-11 00:42:28 +00:00
l10n daemon script
8b300b806a GIT_SILENT made messages (after extraction) 2023-11-09 00:41:55 +00:00
l10n daemon script
166a18bdf6 GIT_SILENT Sync po/docbooks with svn 2023-11-07 02:30:06 +00:00
l10n daemon script
c51a197523 GIT_SILENT made messages (after extraction) 2023-11-07 01:17:59 +00:00
l10n daemon script
8dc89514ee GIT_SILENT Sync po/docbooks with svn 2023-11-05 13:42:30 +00:00
l10n daemon script
32cfe25c4d GIT_SILENT made messages (after extraction) 2023-10-30 00:42:53 +00:00
l10n daemon script
5f92c2e15a GIT_SILENT made messages (after extraction) 2023-10-29 00:42:35 +00:00
l10n daemon script
31b07098a0 GIT_SILENT Sync po/docbooks with svn 2023-10-28 01:31:24 +00:00
l10n daemon script
f5ddb7369b GIT_SILENT Add new file (after extraction) 2023-10-28 00:43:13 +00:00
l10n daemon script
ecbbd48b47 GIT_SILENT made messages (after extraction) 2023-10-28 00:43:08 +00:00
l10n daemon script
0dd16258b5 GIT_SILENT made messages (after extraction) 2023-10-27 00:42:40 +00:00
l10n daemon script
35b3d4b0fa GIT_SILENT made messages (after extraction) 2023-10-26 00:42:28 +00:00
l10n daemon script
ede5c0c89f GIT_SILENT made messages (after extraction) 2023-10-25 00:42:57 +00:00
Albert Vaca Cintora
a93c66b535 SFTP: Add support for SHA256withRSA signature 2023-10-24 21:13:07 +00:00
Albert Vaca Cintora
44103d3f83 SFTP plugin: Add support for more key exchange protocols
Support diffie-hellman-group14-sha256 and ecdh-sha2-nistp256, since
diffie-hellman-group14-sha1 is deprecated.
2023-10-24 21:13:07 +00:00
Philip Cohn-Cort
548b636f32 Better device controls
## Summary

This contains some minor code quality improvements in
`RunCommandControlsProviderService`, as well as the following feature changes:

* If the device for a Device Control is reachable, clicking on the secondary
  space of the control will launch RunCommandActivity. If the device isn't
  reachable, we launch the MainActivity like usual.
* Pixel 7 and other modern Google devices can now show KDE Connect commands
  in the 'Home' quick access tile (you still have to 'add app')

## Test Plan

0. Make sure your Android OS supports Device Controls (Android 11+)
1. Choose a paired device to work with
2. Place at least one command in the Run Command list
3. Enable the command in the Device Controls screen
4. Test what happens when you click on the secondary space of the control
2023-10-23 21:58:08 +00:00
l10n daemon script
184eab4552 GIT_SILENT Sync po/docbooks with svn 2023-10-22 01:41:54 +00:00
l10n daemon script
f28e37d641 GIT_SILENT Sync po/docbooks with svn 2023-10-21 01:26:51 +00:00
l10n daemon script
f0ffebee17 GIT_SILENT Add new file (after extraction) 2023-10-21 00:42:35 +00:00
l10n daemon script
f7d8f7c5a5 GIT_SILENT made messages (after extraction) 2023-10-21 00:42:30 +00:00
l10n daemon script
3647e76c48 GIT_SILENT made messages (after extraction) 2023-10-18 00:42:37 +00:00
l10n daemon script
d555da94ee GIT_SILENT made messages (after extraction) 2023-10-16 00:42:26 +00:00
l10n daemon script
92f8418810 GIT_SILENT made messages (after extraction) 2023-10-14 00:42:54 +00:00
l10n daemon script
1dde1cdf0b GIT_SILENT Sync po/docbooks with svn 2023-10-13 01:29:28 +00:00
l10n daemon script
aedf0bd32e GIT_SILENT made messages (after extraction) 2023-10-13 00:42:29 +00:00
l10n daemon script
2e0d28919e GIT_SILENT made messages (after extraction) 2023-10-12 00:42:20 +00:00
l10n daemon script
78a8c6dfaa GIT_SILENT Sync po/docbooks with svn 2023-10-11 01:42:59 +00:00
l10n daemon script
d54c940edb GIT_SILENT made messages (after extraction) 2023-10-11 00:43:05 +00:00
l10n daemon script
72da819da7 GIT_SILENT Sync po/docbooks with svn 2023-10-10 01:30:53 +00:00
l10n daemon script
593e2c10d8 GIT_SILENT Sync po/docbooks with svn 2023-10-09 01:30:17 +00:00
l10n daemon script
3ef4ec6885 GIT_SILENT made messages (after extraction) 2023-10-09 00:42:45 +00:00
Albert Vaca Cintora
320befcf36 Fix potential concurrency issue
Made the registeredPlugins list CoW since there are multiple threads
iterating and modifying it, potentially at the same time.
2023-10-07 00:36:55 +02:00
Albert Vaca Cintora
6379679e2b Small change to isolate NPE
We have NPE reports from the line mpris.fetchedAlbumArt(url.toString()).
I'm not sure if it's because mpris is null or url is null. Spliting in two
lines to see where the crash actually happens.
2023-10-07 00:35:43 +02:00
l10n daemon script
a081260620 GIT_SILENT Sync po/docbooks with svn 2023-10-03 01:26:40 +00:00
Albert Vaca Cintora
2e247f8e2b Add dependency on sl4j-handroid
This redirects log messages from libraries that use SL4J (like mina-ssh)
to the Android logger so they show up in logcat.
2023-10-02 08:28:10 +00:00
l10n daemon script
d963faf675 GIT_SILENT Sync po/docbooks with svn 2023-10-02 01:29:00 +00:00
l10n daemon script
46e8fedee5 GIT_SILENT Add new file (after extraction) 2023-10-02 00:42:43 +00:00
l10n daemon script
d9af522587 GIT_SILENT Sync po/docbooks with svn 2023-10-01 01:35:38 +00:00
l10n daemon script
dbf9770b3d GIT_SILENT made messages (after extraction) 2023-10-01 00:42:48 +00:00
l10n daemon script
ede9e1aab6 GIT_SILENT Sync po/docbooks with svn 2023-09-30 01:29:03 +00:00
l10n daemon script
202bc8b7b0 GIT_SILENT made messages (after extraction) 2023-09-30 00:42:51 +00:00
l10n daemon script
d55d06dec4 GIT_SILENT made messages (after extraction) 2023-09-29 00:42:37 +00:00
l10n daemon script
3ceb4272ad GIT_SILENT Sync po/docbooks with svn 2023-09-28 01:28:22 +00:00
l10n daemon script
b9bd73c663 GIT_SILENT made messages (after extraction) 2023-09-28 00:42:33 +00:00
l10n daemon script
8bcb2a6545 GIT_SILENT Sync po/docbooks with svn 2023-09-27 01:30:00 +00:00
l10n daemon script
290c7a919e GIT_SILENT made messages (after extraction) 2023-09-27 00:43:18 +00:00
l10n daemon script
2b16b240bf GIT_SILENT Sync po/docbooks with svn 2023-09-26 01:31:19 +00:00
l10n daemon script
5828e01f0d GIT_SILENT made messages (after extraction) 2023-09-26 00:42:49 +00:00
l10n daemon script
93ac3eae90 GIT_SILENT Sync po/docbooks with svn 2023-09-25 01:28:09 +00:00
l10n daemon script
293b3a28f7 GIT_SILENT made messages (after extraction) 2023-09-25 00:42:31 +00:00
l10n daemon script
a87527ba71 GIT_SILENT Sync po/docbooks with svn 2023-09-24 01:33:03 +00:00
Albert Vaca Cintora
5a6374db86 Update store description to make file management more prominent
Otherwise Google doesn't consider we need the permission to install APKs
2023-09-23 09:49:54 +02:00
l10n daemon script
61b33782a1 GIT_SILENT made messages (after extraction) 2023-09-23 00:44:16 +00:00
l10n daemon script
dd9e0c94b1 GIT_SILENT made messages (after extraction) 2023-09-22 00:44:12 +00:00
l10n daemon script
18ff75e915 GIT_SILENT made messages (after extraction) 2023-09-21 00:44:26 +00:00
Albert Vaca Cintora
f2af39aa8e Release 1.29.0 2023-09-20 21:22:53 +02:00
Albert Vaca Cintora
31fce7fdb0 Use Elliptic Curve encryption instead of RSA
This should fix SFTP not working when using GSConnect (which
doesn't specify the SSH parameters we do to allow old cyphers).

Requires API 23, so on pre-23 we still use RSA.
2023-09-20 18:38:34 +00:00
l10n daemon script
41f511d675 GIT_SILENT made messages (after extraction) 2023-09-20 00:45:21 +00:00
Albert Vaca Cintora
14e61246ff Add a per-device confirmation before copying the contacts
The contacts plugin is the only one that copies (and persists) data to the
remote device just by connecting. By adding this extra confirmation once
per device, we prevent this from happening in cases where someone paired
with a friend to transfer a file, or paired by accident.
2023-09-19 12:30:58 +00:00
l10n daemon script
9fdb71096e GIT_SILENT made messages (after extraction) 2023-09-19 00:45:16 +00:00
Albert Vaca Cintora
d0931f28a9 Split file transfer error notification to a separate channel 2023-09-18 21:23:56 +00:00
Albert Vaca Cintora
2ba79a2f58 Long-tapping the "Send clipboard" quick settings tile opens the app
Instead of launching the system app settings activity.
2023-09-18 21:22:20 +00:00
Albert Vaca Cintora
7c649be2ce Add "laptop" as a device type
For consistency with the other implementations, which distinguish the
two kinds of computers.
2023-09-18 07:31:06 +00:00
Albert Vaca Cintora
3baa9fa14e Using collect() instead of java16-only toList() to fix crash 2023-09-18 04:12:54 +02:00
l10n daemon script
48919bddcd GIT_SILENT made messages (after extraction) 2023-09-18 00:45:26 +00:00
l10n daemon script
4d3480399d GIT_SILENT Sync po/docbooks with svn 2023-09-17 02:00:02 +00:00
l10n daemon script
9290110fd8 GIT_SILENT made messages (after extraction) 2023-09-17 00:44:48 +00:00
l10n daemon script
dfb647536b GIT_SILENT made messages (after extraction) 2023-09-16 00:45:18 +00:00
Albert Vaca Cintora
3eedc88c3c Remove photo plugin
As discussed in Matrix and BUG: 474121 this plugin is confusing (because
it doesn't actually take a photo, it just launches the camera on your
phone) and its use case can be covered by taking a photo and sharing it,
which only requires a couple extra clicks.
2023-09-15 23:04:21 +00:00
l10n daemon script
1d3c818a2c GIT_SILENT made messages (after extraction) 2023-09-15 00:45:32 +00:00
l10n daemon script
a67447e3f5 GIT_SILENT made messages (after extraction) 2023-09-14 00:44:51 +00:00
Albert Vaca Cintora
57ec71e60b Add accessibility description to FABs 2023-09-12 13:06:06 +02:00
Albert Vaca Cintora
17757908c4 Split notification channels for received and sent files
BUG: 433051
2023-09-12 05:14:37 +02:00
Albert Vaca Cintora
708889eed7 Use setFailed for errors when sending/receiving files 2023-09-12 05:06:48 +02:00
Simon Redman
1096ace12c Remove smsMmsChannel notification channel
## Summary

Remove the dead "New Message" notification channel.

This channel was used for a tiny period, probably around 4 years ago, when we thought the only way to support sending MMS on Android was to be the default SMS app, thus we wanted to show users a notification when they received messages while our app was in charge of handling them.

Thankfully, we do not need to be the default SMS app, so this notification channel should be removed.

## Test Plan

### Before:
Looking at the list of notification streams in the settings for KDE Connect will include a "New Message" channel. Notifications are never posted to this channel.

### After:
Users will not see a "New Message" channel. Note that it does show a count of deleted streams, to prevent spam. See [documentation](https://developer.android.com/develop/ui/views/notifications/channels#DeleteChannel) for explanation.
2023-09-12 02:31:52 +00:00
l10n daemon script
b4f33adb6c GIT_SILENT made messages (after extraction) 2023-09-11 00:46:21 +00:00
l10n daemon script
6ff71c3965 GIT_SILENT made messages (after extraction) 2023-09-08 00:45:32 +00:00
Albert Vaca Cintora
cd0ae95e58 Revert "Partially revert "Add MDNS discovery""
Adds back MDNS discovery and the setting to toggle UDP broacasts on/off.

We can probably remove the setting at some point, and just keep it enabled.

Another thing we can probably improve is the acquisition of the multicast
lock, so we only hold it when the app is open, or at least only when the
device is connected to Wifi (which we know). For more context, see commit
https://invent.kde.org/network/kdeconnect-android/-/merge_requests/375/diffs?commit_id=f71a3fe6b95af404d2a675afb78f24847064f8a9

This reverts commit 5da804939d.
2023-09-07 09:40:22 +02:00
Albert Vaca Cintora
f89c01ec17 Release 1.28.0 2023-09-07 09:33:14 +02:00
Albert Vaca Cintora
5da804939d Partially revert "Add MDNS discovery"
This partially reverts commit 8f8a09a99a.

Removing MDNS to do one last bugfix-only release.
2023-09-07 09:27:55 +02:00
Albert Vaca Cintora
3fbef1da87 Add some logs to ConnectivityManager.NetworkCallback 2023-09-07 09:27:55 +02:00
Albert Vaca Cintora
ce055818c9 Bump deps, do not use alpha accompanist 2023-09-07 09:27:55 +02:00
l10n daemon script
79a59a125f GIT_SILENT made messages (after extraction) 2023-09-07 00:45:20 +00:00
Albert Vaca Cintora
ae98b5c71f When permissions are granted, reload plugins for all devices 2023-09-06 08:09:09 +00:00
Albert Vaca Cintora
6b1b12a178 Bump dependencies 2023-09-06 08:08:53 +02:00
Albert Vaca Cintora
b01266d654 Fix ForegroundServiceStartNotAllowedException in ACTION_SCREEN_ON
The same way we did for ACTION_BOOT_COMPLETED
2023-09-06 07:42:18 +02:00
l10n daemon script
e9a862f27c GIT_SILENT made messages (after extraction) 2023-09-04 00:46:15 +00:00
l10n daemon script
cb0cea827f GIT_SILENT Sync po/docbooks with svn 2023-09-03 02:05:47 +00:00
l10n daemon script
6e5cfd9b2e GIT_SILENT made messages (after extraction) 2023-09-03 00:45:30 +00:00
l10n daemon script
1080bae5e2 GIT_SILENT Sync po/docbooks with svn 2023-09-02 01:49:59 +00:00
l10n daemon script
d2290bedb0 GIT_SILENT made messages (after extraction) 2023-09-02 00:46:41 +00:00
Albert Vaca Cintora
4d2efe6b89 Request notifications permission so we can target Android 13
Starting next month (September 2023) it will be required to target
Android 13 to publish to the Play Store.

On Android 13, we need to request the POST_NOTIFICATIONS permission. 

This change adds the permission as required/optional to the plugins
that do create notifications. It also adds a popup to request it the
first time you open the app.
2023-09-01 03:34:32 +00:00
Albert Vaca Cintora
37db0810aa Bind only the socket we use for UDP broadcast, not the process 2023-08-30 23:12:17 +02:00
Axel Pirek
f9a3598edf Bind sockets to network
Fixes a race condition where onNetworkChange was called before the new
network became the default and the identity packet would be broadcast to
the wrong (e.g. cellular) network.
2023-08-30 23:09:02 +02:00
Albert Vaca Cintora
1d822e1610 Fix keyboard/d-pad navigation
Allows navigating the app using the arrow keys on a keyboard or the
D-pad on a TV remote, up until the plugin list (I haven't checked
specific plugins).
2023-08-30 13:55:08 +00:00
l10n daemon script
4e9dece3b2 GIT_SILENT made messages (after extraction) 2023-08-30 00:46:01 +00:00
Albert Vaca Cintora
8f8a09a99a Add MDNS discovery
Uses Android's `NsdManager` to announce a `_kdeconnect._udp` service using MDNS. This is done in addition to sending UDP broadcasts.

When we detect a device this way, we send a UDP identity packet to it (identical to the ones we broadcast but sent to a single device).

I also added a toggle in settings to disable the UDP broadcasts, so we can test MDNS by itself.
2023-08-28 21:37:55 +00:00
l10n daemon script
b545257fa7 GIT_SILENT Sync po/docbooks with svn 2023-08-28 02:06:33 +00:00
l10n daemon script
2c72619ae7 GIT_SILENT made messages (after extraction) 2023-08-28 00:46:12 +00:00
l10n daemon script
418cf720ab GIT_SILENT made messages (after extraction) 2023-08-27 00:45:55 +00:00
l10n daemon script
5ef5be87ca GIT_SILENT made messages (after extraction) 2023-08-23 00:46:18 +00:00
Albert Vaca Cintora
a74a76b1da Organize permissions 2023-08-21 11:47:13 +02:00
l10n daemon script
bba910e420 GIT_SILENT made messages (after extraction) 2023-08-18 00:44:44 +00:00
l10n daemon script
75de17de47 GIT_SILENT Sync po/docbooks with svn 2023-08-15 01:47:20 +00:00
l10n daemon script
b0833391b4 GIT_SILENT Add new file (after extraction) 2023-08-15 00:45:07 +00:00
l10n daemon script
9a8c72f106 GIT_SILENT made messages (after extraction) 2023-08-15 00:45:02 +00:00
l10n daemon script
723f40d30c GIT_SILENT Sync po/docbooks with svn 2023-08-13 01:45:21 +00:00
l10n daemon script
079ee806e2 GIT_SILENT made messages (after extraction) 2023-08-13 00:45:54 +00:00
l10n daemon script
ed9bdfb276 GIT_SILENT Sync po/docbooks with svn 2023-08-10 01:46:15 +00:00
l10n daemon script
e688e4f89b GIT_SILENT made messages (after extraction) 2023-08-10 00:45:59 +00:00
l10n daemon script
a4e9f9d15b GIT_SILENT Add new file (after extraction) 2023-08-09 00:45:55 +00:00
Albert Vaca Cintora
ea4e6bae7b Use AGP 8.1 locales_config autogeneration 2023-08-08 10:08:10 +02:00
Erik Duisters
b3b538ff31 Migrate build configuration to kotlin
Migrate build logic to kotlin including use of version catalog
2023-08-08 08:01:35 +00:00
Dmitry Yudin
c5c780b5ce Update Presenter activity to use Compose
The Presenter activity including its layout file and related Java class were replaced with Compose UI.
Additionally, the androidx.compose.material3:material3 was updated from version 1.1.0 to version 1.1.1.
2023-08-08 06:12:15 +00:00
l10n daemon script
ad83f76ad1 GIT_SILENT Sync po/docbooks with svn 2023-08-07 02:06:33 +00:00
l10n daemon script
31d0d840d3 GIT_SILENT Add new file (after extraction) 2023-08-07 00:48:24 +00:00
l10n daemon script
2e5810bc7a GIT_SILENT made messages (after extraction) 2023-08-06 00:46:08 +00:00
Erik Duisters
7f39004de2 Consistently use IOUtils.close() 2023-08-05 20:15:36 +00:00
l10n daemon script
f04c415877 GIT_SILENT Sync po/docbooks with svn 2023-08-05 01:46:23 +00:00
l10n daemon script
da0949324c GIT_SILENT made messages (after extraction) 2023-08-05 00:45:57 +00:00
Erik Duisters
10ee5148e6 build.gradle fixes
Fixed usage of deprecated APIs in build.gradle

Updated kotlin, kotlin compiler, coroutines, gradle plugin, compose material3 and recyclerview versions
2023-08-04 12:56:31 +00:00
Albert Vaca Cintora
5c99b1d32e Avoid starting more than 1 connection to the same device
Since we close old connections when a new connection is received, due to
race conditions we could end up without a valid connection in this case.

Equivalent to https://invent.kde.org/network/kdeconnect-kde/-/merge_requests/580
2023-08-04 08:25:11 +00:00
l10n daemon script
3ffbaad554 GIT_SILENT Sync po/docbooks with svn 2023-08-04 01:46:37 +00:00
l10n daemon script
f021e2b83f GIT_SILENT Add new file (after extraction) 2023-08-04 00:45:38 +00:00
Erik Duisters
3da626156c Fix addPacket replacing existing and then adding duplicate item 2023-08-03 12:25:40 +02:00
l10n daemon script
7be8ced91c GIT_SILENT Sync po/docbooks with svn 2023-08-03 02:06:55 +00:00
l10n daemon script
7d2e2edce5 GIT_SILENT made messages (after extraction) 2023-08-03 00:45:58 +00:00
l10n daemon script
52e44d5155 GIT_SILENT Sync po/docbooks with svn 2023-08-02 01:54:11 +00:00
Erik Duisters
0bd326d403 Some Kotlin refactorings 2023-08-01 11:22:41 +00:00
l10n daemon script
46dd6a4bef GIT_SILENT Sync po/docbooks with svn 2023-08-01 01:57:04 +00:00
l10n daemon script
a958516cf5 GIT_SILENT made messages (after extraction) 2023-08-01 00:45:40 +00:00
l10n daemon script
a8b1f7de11 GIT_SILENT Sync po/docbooks with svn 2023-07-31 02:07:53 +00:00
l10n daemon script
91c420daa2 GIT_SILENT made messages (after extraction) 2023-07-31 00:46:38 +00:00
l10n daemon script
5f66bec8aa GIT_SILENT Sync po/docbooks with svn 2023-07-30 01:48:54 +00:00
l10n daemon script
8a0aeff2e5 GIT_SILENT Add new file (after extraction) 2023-07-30 00:45:26 +00:00
l10n daemon script
5f1b3e7762 GIT_SILENT made messages (after extraction) 2023-07-30 00:45:21 +00:00
Albert Vaca Cintora
15778faeff Update store description to make Google happy 2023-07-29 12:04:40 +02:00
Albert Vaca Cintora
a2ef4659d9 Release 1.27.1 2023-07-29 12:00:27 +02:00
Albert Vaca Cintora
e769a512eb Fix crash in loadRememberedDevicesFromSettings 2023-07-29 11:38:46 +02:00
Albert Vaca Cintora
4da0599f0e Fix crash on start in API 31+
Sometimes we can't start the foreground service at boot for some reason.
I have a couple untested theories: either the phone is slow at boot and
we don't get to call startForeground in time, or the user has never
started the app before and we are not allowed to start it or to create a
notification.
2023-07-29 11:28:50 +02:00
Albert Vaca Cintora
b00a0771fd Fix NPE when mediaSession was set to null in a separate thread 2023-07-29 11:08:23 +02:00
l10n daemon script
9d4e4cda3a GIT_SILENT made messages (after extraction) 2023-07-29 00:45:28 +00:00
l10n daemon script
06f8d47b00 GIT_SILENT Sync po/docbooks with svn 2023-07-27 01:46:36 +00:00
l10n daemon script
e46a413630 GIT_SILENT Add new file (after extraction) 2023-07-27 00:46:15 +00:00
l10n daemon script
d40e3122cc GIT_SILENT made messages (after extraction) 2023-07-27 00:46:10 +00:00
l10n daemon script
d84ac8b5f0 GIT_SILENT made messages (after extraction) 2023-07-26 00:46:30 +00:00
l10n daemon script
7128c9e298 GIT_SILENT Sync po/docbooks with svn 2023-07-24 09:02:25 +00:00
l10n daemon script
affc019c9c GIT_SILENT made messages (after extraction) 2023-07-24 07:33:05 +00:00
l10n daemon script
8ffd1f5b20 GIT_SILENT made messages (after extraction) 2023-07-21 00:49:36 +00:00
l10n daemon script
ca2a622de5 GIT_SILENT made messages (after extraction) 2023-07-20 00:48:35 +00:00
l10n daemon script
40fc12797a GIT_SILENT Sync po/docbooks with svn 2023-07-19 02:36:08 +00:00
Albert Vaca Cintora
f825a37c8e Better explanation for the mouse receiver permissions 2023-07-18 11:14:15 +02:00
Albert Vaca Cintora
7c52260efe Remove request packets from Battery and Connectivity Report plugins
We already send updates right after connecting and once there's a
change, so this was redundant.
2023-07-17 14:07:55 +02:00
Albert Vaca Cintora
49e2b2d9a2 Release 1.27.0 2023-07-16 18:15:18 +02:00
Albert Vaca Cintora
96fc4016ff Add missing import 2023-07-16 17:35:02 +02:00
Albert Vaca Cintora
1706a4c10d Revert "Disable MouseReceiver Plugin so we don't need accessibility API"
This reverts commit 32d6a346ab.
2023-07-16 17:29:25 +02:00
Albert Vaca Cintora
13b5fc4550 Revert "Remove REQUEST_INSTALL_PACKAGES permission"
This reverts commit b5d9293103.
2023-07-16 10:57:17 +02:00
Albert Vaca Cintora
11ffab5502 Revert "Enable the loopback link on Google test devices"
This reverts commit f26bd54be5.
2023-07-16 10:49:04 +02:00
l10n daemon script
377f91bd23 GIT_SILENT Sync po/docbooks with svn 2023-07-16 01:57:34 +00:00
l10n daemon script
8e078e608a GIT_SILENT made messages (after extraction) 2023-07-16 00:48:17 +00:00
l10n daemon script
12d08a17c2 GIT_SILENT Sync po/docbooks with svn 2023-07-14 02:00:18 +00:00
l10n daemon script
4b6ad1cdaa GIT_SILENT Add new file (after extraction) 2023-07-14 00:47:21 +00:00
l10n daemon script
1fcfd4b879 GIT_SILENT made messages (after extraction) 2023-07-12 00:47:11 +00:00
Albert Vaca Cintora
541ee4d3cc Remove Esperanto localization from fastlane
Esperanto isn't supported by Google
2023-07-08 00:47:45 +02:00
Albert Vaca Cintora
af922a4277 Release 1.26.4 2023-07-08 00:41:42 +02:00
Albert Vaca Cintora
48cccf3fca Catch SecurityException when calling getActiveNotifications
It's okay to ignore this since we were only using it to check if Spotify
was running.
2023-07-08 00:39:13 +02:00
Albert Vaca Cintora
1c3389efa0 Do not listen for PACKAGE_REPLACED broadcasts
We already listen for MY_PACKAGE_REPLACED which is sent since API 12
2023-07-08 00:29:09 +02:00
Albert Vaca Cintora
f54ebdb39b Trying random things to try to fix ForegroundServiceStartNotAllowedException 2023-07-08 00:24:17 +02:00
Albert Vaca Cintora
ea80000a4e Add a null check as mentioned in !377 2023-07-08 00:03:12 +02:00
Albert Vaca Cintora
d9db7e4ad9 Catch TextParsingException (which wrapps SocketException)
Could happen if the download of the CSV file failed or got interrupted
2023-07-08 00:00:06 +02:00
Łukasz Patron
1273cb641a Unbreak Mpris media notifications
Because notificationDevice is only set on updateCurrentPlayer(), we
ought to call it before checking if the device is null.
2023-07-07 20:48:43 +02:00
l10n daemon script
cafbfcaee8 GIT_SILENT Sync po/docbooks with svn 2023-07-07 01:53:59 +00:00
l10n daemon script
ac4c997efd GIT_SILENT made messages (after extraction) 2023-07-07 00:50:20 +00:00
l10n daemon script
d05feaa6d0 GIT_SILENT Sync po/docbooks with svn 2023-07-06 02:28:00 +00:00
l10n daemon script
4967cc7a81 GIT_SILENT Add new file (after extraction) 2023-07-06 00:58:05 +00:00
l10n daemon script
59cc3f2d4a GIT_SILENT made messages (after extraction) 2023-07-06 00:57:50 +00:00
l10n daemon script
0b9880d9b8 GIT_SILENT Sync po/docbooks with svn 2023-07-04 02:31:15 +00:00
Albert Vaca Cintora
90f89c653d Try to fix NPE in removeOnSubscriptionsChangedListener 2023-07-02 23:40:18 +02:00
Albert Vaca Cintora
e53338c70e Release 1.26.3 2023-07-02 23:34:46 +02:00
Albert Vaca Cintora
e641ff5a0a Don't call put if we are going to call remove right after
Note we still want the remove in case the plugin already was loaded
2023-07-02 23:26:56 +02:00
Albert Vaca Cintora
2ebaf6ae5b Ignore exceptions in pairingSuccessful callbacks
Bubbling up the exception to the PairingHandler makes the device become
unpaired, and we only want this if the error happens persisting device info
2023-07-02 23:01:05 +02:00
Albert Vaca Cintora
dd89463d75 Add logging to help debug a crash restoring saved devices 2023-07-02 22:57:40 +02:00
Albert Vaca Cintora
7194b308cb Fix NPE 2023-07-02 20:46:11 +02:00
Albert Vaca Cintora
328b708083 Fix NPE by checking if there's a Device 2023-07-02 10:27:52 +02:00
l10n daemon script
6404b86373 GIT_SILENT Sync po/docbooks with svn 2023-07-01 01:53:29 +00:00
l10n daemon script
3263b37c8a GIT_SILENT Sync po/docbooks with svn 2023-06-30 01:53:09 +00:00
Albert Vaca Cintora
a31476951a Release 1.26.2 2023-06-29 10:52:37 +02:00
Albert Vaca Cintora
1d105bbb3d Re-add nowPlaying for backwards compat with GSConnect 50 2023-06-29 10:48:02 +02:00
l10n daemon script
3154eef6a2 GIT_SILENT Sync po/docbooks with svn 2023-06-29 01:51:01 +00:00
l10n daemon script
97a0389d04 GIT_SILENT made messages (after extraction) 2023-06-29 00:46:34 +00:00
Albert Vaca Cintora
8c1603f6e4 Add DeviceInfo class
`DeviceInfo` contains all the properties we need to instantiate a `Device`:
id, name, type, cert, capabilities and protocol version. Before, we had a mix
of passing those around as arguments or passing identity packets (ie: json).
This simplifies the `Device` class quite a bit.

Now, `BaseLink` subclasses need to implement the `getDeviceInfo()` interface
that returns a `DeviceInfo`, which is what we will pass around and eventually
use to instantiate a `Device`.

This means that identity packets are an implementation detail of the
`LanLinkProvider` and that other implementations could get the `DeviceInfo`
in a different way.

In a future, we can add a mechanism for links to notify when their `DeviceInfo` changed.
This will allow us to better support device renames (which now are implemented by 
reconnecting to the device and don't always work) or sending the capabilities fields
later in the case of MacOS/iOS where we can't send them in a UDP packet due to the
size limit of 1500 bytes.
2023-06-27 11:14:36 +00:00
l10n daemon script
310e61b570 GIT_SILENT Sync po/docbooks with svn 2023-06-27 01:58:07 +00:00
l10n daemon script
bfa4d05e0d GIT_SILENT made messages (after extraction) 2023-06-27 00:47:27 +00:00
Albert Vaca Cintora
6568bb486c Synchronize access to fetchUrlList
Otherwise we could get ArrayIndexOutOfBoundsException
2023-06-27 02:34:00 +02:00
Albert Vaca Cintora
a46fa23419 Copy the ref to MpriMprisPlayer since the field can become null
Create a local copy of the reference, otherwise other fields can set the
field to null while the function is running and cause a NPE.
2023-06-27 02:26:10 +02:00
Krut Patel
a29aeaad92 mpris-receiver: Deregister callbacks when clearing players
## Summary
### Main issue
In essence, clearing `players` field inside `onActiveSessionsChanged` is not enough - we need to also deregister the `MprisReceiverCallback` from `MediaController` to ensure the `MprisReceiverPlayer` is truly destroyed.

### Details
* Spotify has a bad habit of causing lots of calls to `onActiveSessionsChanged` on song change. In each call, we clear the existing players and create new instances of `MprisReceiverPlayer` and `MprisReceiverCallback` to track media changes.
* Each `MprisReceiverCallback` instance gets registered with `MediaController` inside `createPlayer`.
* Inside `onActiveSessionsChanged`, if the underlying `MediaController` object remained alive, we would now end up with _two_ instances of `MprisReceiverCallback` that internally reference the same `MprisReceiverPlayer` object.

### Fix
Deregister the callbacks inside `onActiveSessionsChanged` before clearing `players` hashmap.

## Test Plan
* Add log line `Log.d(TAG, "sending Metadata");` just above `device.sendPacket(np);` inside `sendMetadata` of `MprisReceiverPlugin`.
* Start playing a song on spotify, and after a few secs, hit Next.\
* Monitor our logcat.

### Before:
<details><summary>Relevant logcat after Next was pressed</summary>

```txt
2023-06-25 18:56:57.395 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.403 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.413 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.422 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.436 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.454 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.484 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.499 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.524 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.544 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.554 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.562 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.569 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.579 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.592 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.603 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.613 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.629 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.641 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.653 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.666 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.671 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.679 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.686 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.694 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.699 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.704 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.713 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.719 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.724 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.730 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.743 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.750 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.759 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.770 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.785 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.793 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.799 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.808 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.812 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.819 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.831 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.838 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.844 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.849 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.855 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.861 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.866 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.872 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.877 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.884 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.892 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.898 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.903 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.907 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.913 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.917 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.921 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.928 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.934 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.938 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.944 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.949 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.954 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.959 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.966 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.971 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.976 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.983 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.990 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:57.995 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.000 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.007 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.013 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.021 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.026 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.032 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.041 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.047 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.055 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.062 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.067 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.072 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.078 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.083 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.088 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.096 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.106 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.114 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.120 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.127 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.135 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.143 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.149 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.157 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.164 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.174 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.180 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.186 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.195 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.201 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.209 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.216 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.223 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.231 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.238 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.243 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.251 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.262 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.269 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.275 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.281 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.287 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.294 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.302 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.310 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.319 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.327 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.337 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.345 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.350 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.357 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.363 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.369 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.374 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.382 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.389 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.398 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.404 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.411 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.419 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.427 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.434 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.441 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.449 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.453 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.458 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.464 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.471 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.475 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.483 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.490 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.497 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.502 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.510 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.519 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.532 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.536 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.543 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.552 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.560 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.567 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.574 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.580 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.587 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.592 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.599 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.606 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.613 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.620 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.626 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.633 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.642 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.652 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.659 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.667 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.675 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.683 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.690 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.699 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.706 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.712 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.718 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.726 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.734 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.742 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.748 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.753 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.759 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.765 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.774 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.781 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.787 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.794 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.801 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.806 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.811 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.817 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.823 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.831 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.839 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.847 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.854 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.862 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.870 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.875 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.879 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.886 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.892 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.898 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.904 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.911 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.919 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.927 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.934 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.939 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.945 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.953 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.959 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.969 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.979 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.986 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:58.993 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.001 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.007 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.014 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.021 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.027 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.034 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.040 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.046 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.053 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.060 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.067 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.075 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.083 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.092 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.099 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.107 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.114 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.121 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.129 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.136 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.142 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:56:59.226 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.228 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.229 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.231 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.233 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.234 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.234 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.235 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.236 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.236 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.237 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.237 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.238 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.238 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.239 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:56:59.239 31955-31955 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
```

</details>

### After:
<details><summary>Relevant logcat after Next was pressed</summary>

```txt
2023-06-25 18:54:57.412 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.534 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.547 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.558 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.567 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.579 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.590 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.595 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.603 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendMetadata
2023-06-25 18:54:57.655 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.656 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.667 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.678 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.680 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.683 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.701 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.711 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.714 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.716 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.726 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.729 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.739 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.742 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.743 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
2023-06-25 18:54:57.746 30742-30742 MprisReceiver           org.kde.kdeconnect_tp                D  sendPlayerList
```
</details>


## Future work
There are still some redundant calls to `sendMetadata`. These are coming from multiple calls to `onPlaybackStateChanged` from Spotify. To reduce these, we'd need to add a debouncer.

Another thing- we can see that `sendPlayerList` packet is also being sent quite a lot.
1. We probably need to be smarter about creating new instances of `MprisReceiverPlayer` inside `onActiveSessionsChanged` instead of the nuke-all-and-rebuild approach we have today.
2. Maybe we can implement a debouncer inside `onActiveSessionsChanged` to avoid sending too many packets.
2023-06-25 15:20:11 +00:00
l10n daemon script
79744dc17b GIT_SILENT made messages (after extraction) 2023-06-25 00:51:53 +00:00
Albert Vaca Cintora
096cf3f5f5 Release 1.26.1 2023-06-24 15:57:21 +02:00
l10n daemon script
10352e53c2 GIT_SILENT made messages (after extraction) 2023-06-24 00:49:55 +00:00
Albert Vaca Cintora
cbeaa72845 Added a fastlane README 2023-06-21 09:58:18 +02:00
Albert Vaca Cintora
41e296b16d Better exception handling in LanLinkProvider
Bubble up exceptions instead of using giant, generic try-catch blocks.

The UDP and TCP listener loops are now where we catch all the exceptions that might happen handling the incoming packets.

Also, the creation of worker threads now happens in the listener loops as well instead of the inner functions.

Finally the `broadcastUdpPacket` function has been split in `broadcastUdpIdentityPacket` and `sendUdpIdentityPacket` (the first calls the second).
2023-06-20 08:26:00 +00:00
l10n daemon script
8eb35028a1 GIT_SILENT Sync po/docbooks with svn 2023-06-20 02:25:35 +00:00
l10n daemon script
f9486204a5 GIT_SILENT made messages (after extraction) 2023-06-20 00:50:47 +00:00
Albert Vaca Cintora
46c32365ba Remove unused class 2023-06-19 18:36:57 +02:00
Albert Vaca Cintora
9dfa5bc51c Update the pairstate before calling any callbacks 2023-06-19 18:03:29 +02:00
Albert Vaca Cintora
fbf77fa103 Log when refreshing the device list 2023-06-19 18:03:29 +02:00
l10n daemon script
06a486d99b GIT_SILENT Sync po/docbooks with svn 2023-06-19 02:04:10 +00:00
l10n daemon script
2072128a6f GIT_SILENT Sync po/docbooks with svn 2023-06-18 02:39:49 +00:00
l10n daemon script
a7dc9e4249 GIT_SILENT Add new file (after extraction) 2023-06-18 00:52:50 +00:00
l10n daemon script
5a27a613ea GIT_SILENT made messages (after extraction) 2023-06-18 00:52:41 +00:00
Albert Vaca Cintora
ad48a25d79 Fix networkpacket getter visibility 2023-06-16 22:53:44 +02:00
Albert Vaca Cintora
2a273ff07f Remove redundant comments 2023-06-16 22:00:48 +02:00
Albert Vaca Cintora
bd0b03eafb Make this more readable 2023-06-16 21:49:39 +02:00
Albert Vaca Cintora
40b791a7c4 Only try to send unpair packet if reachable 2023-06-16 19:57:41 +02:00
Albert Vaca Cintora
867bdfb6fb Move PairingHandler out from the UI package 2023-06-16 19:51:57 +02:00
Albert Vaca Cintora
51312f9a25 Lower log level even more 2023-06-16 19:45:15 +02:00
Albert Vaca Cintora
e4743002be Fix infinite loop when already paired devices ask to pair 2023-06-16 19:44:11 +02:00
Albert Vaca Cintora
12de65f234 Rename "signal" function to match the name of the listeners' interface 2023-06-16 19:23:05 +02:00
Albert Vaca Cintora
6d089093e9 Lower log level 2023-06-16 19:23:04 +02:00
Albert Vaca Cintora
ffd99858e6 Remove interface not needed 2023-06-16 19:23:04 +02:00
Albert Vaca Cintora
6879e40341 Null check not needed 2023-06-16 19:23:04 +02:00
l10n daemon script
cf28c9c7dc GIT_SILENT Sync po/docbooks with svn 2023-06-16 01:48:53 +00:00
Albert Vaca Cintora
9d1cd05ce4 Fix LinkProviders' onNetworkChanged called before onStart 2023-06-15 14:52:00 +02:00
Albert Vaca Cintora
3e595cb262 Rename computer -> device 2023-06-15 14:45:54 +02:00
l10n daemon script
636c70ff06 GIT_SILENT Sync po/docbooks with svn 2023-06-15 01:55:19 +00:00
l10n daemon script
d68ccd69e0 GIT_SILENT Add new file (after extraction) 2023-06-15 00:46:19 +00:00
l10n daemon script
a9e8050aeb GIT_SILENT made messages (after extraction) 2023-06-15 00:46:10 +00:00
Albert Vaca Cintora
81270f724d Remove reverseConnectionBlackList used to support Android < 4 2023-06-14 18:17:21 +02:00
Albert Vaca Cintora
1ef3d75eb1 Update comments 2023-06-14 18:16:26 +02:00
l10n daemon script
37c8a41778 GIT_SILENT Sync po/docbooks with svn 2023-06-14 01:50:22 +00:00
l10n daemon script
ad9d375299 GIT_SILENT Sync po/docbooks with svn 2023-06-13 01:55:11 +00:00
l10n daemon script
d6647e44b9 GIT_SILENT Add new file (after extraction) 2023-06-13 00:47:22 +00:00
l10n daemon script
1d15cdba27 GIT_SILENT made messages (after extraction) 2023-06-13 00:47:14 +00:00
Albert Vaca Cintora
8438f11ef9 Release 1.26.0 2023-06-12 20:38:00 +02:00
Albert Vaca Cintora
5b928fa6cd Fix screen turning off while find my phone was ringing 2023-06-12 18:17:36 +00:00
Albert Vaca Cintora
f63214d496 FindMyPhone: use AudioAttributes and WAKE_LOCK
Since we now require API 21, we can use setAudioAttributes instead of
the deprecated setAudioStreamType.

Since we already require WAKE_LOCK for the SMS plugin, we can use it
here to prevent the screen from sleeping.
2023-06-12 18:17:36 +00:00
Albert Vaca Cintora
e326d351a0 Case insensitive compare 2023-06-12 18:14:33 +00:00
Albert Vaca Cintora
0dec7e8a0a Replace DeviceNames library
The version of the library we used stopped working in 2020 when the names
database it tries to download got deleted from the master branch of their
Github repo. There's a newer version, but it seems to have lost the
fetch-from-the-internet functionality (it only bundles a list of names) and
for some reason it crashes when I tested it (I've opened an issue on their
repo). Since Google now provides a CSV with all the Android device names
that exist, I've replaced the library by my own function that downloads the
CSV file (~3MB) in the first run of the app and looks for the name there.
2023-06-12 18:14:33 +00:00
l10n daemon script
7d87ea5918 GIT_SILENT Sync po/docbooks with svn 2023-06-12 02:14:48 +00:00
l10n daemon script
3397fd75b4 GIT_SILENT Add new file (after extraction) 2023-06-12 00:52:58 +00:00
l10n daemon script
26dd530c30 GIT_SILENT made messages (after extraction) 2023-06-12 00:52:49 +00:00
Albert Vaca Cintora
d63f2cfb67 Set socket options before binding to a port and not after
By passing a port the implementation of DatagramSocket already binds to
it, making it fail if the port was already in use even if we did
setReuseAddress because that happened after binding.
2023-06-11 19:15:00 +02:00
l10n daemon script
cfe4559d60 GIT_SILENT Sync po/docbooks with svn 2023-06-11 01:55:04 +00:00
l10n daemon script
39c1ebbd64 GIT_SILENT Add new file (after extraction) 2023-06-11 00:47:08 +00:00
l10n daemon script
377fc68b0d GIT_SILENT made messages (after extraction) 2023-06-11 00:46:58 +00:00
l10n daemon script
e14c34ce8b GIT_SILENT Sync po/docbooks with svn 2023-06-10 01:53:35 +00:00
l10n daemon script
3d2cd73ebb GIT_SILENT Add new file (after extraction) 2023-06-10 00:47:52 +00:00
l10n daemon script
c7dbf5f32c GIT_SILENT made messages (after extraction) 2023-06-10 00:47:42 +00:00
Albert Vaca Cintora
9f753783b6 Remove fastlane translations with wrong language codes 2023-06-09 18:31:15 +02:00
Albert Vaca Cintora
e1c50dd450 Fastlane StaticMessages: use Google's language codes
And only create directories for languages that have a translation.
Otherwise, fastlane crashes trying to upload the translations.

After merging this I will manually delete the "bad" translations in the fastlane directory.
2023-06-09 16:29:36 +00:00
l10n daemon script
24a81d7905 GIT_SILENT Sync po/docbooks with svn 2023-06-09 01:57:13 +00:00
l10n daemon script
c3a08fee8c GIT_SILENT Add new file (after extraction) 2023-06-09 00:47:34 +00:00
l10n daemon script
7a4f7a48e4 GIT_SILENT made messages (after extraction) 2023-06-09 00:47:25 +00:00
Albert Vaca Cintora
e530d7ac94 Remove deprecated "nowPlaying" field 2023-06-08 22:20:05 +00:00
Albert Vaca Cintora
8c98bdcb36 Fix NPE 2023-06-08 23:56:07 +02:00
l10n daemon script
a1fdf63d3f GIT_SILENT Sync po/docbooks with svn 2023-06-08 01:55:04 +00:00
l10n daemon script
e84392bdcf GIT_SILENT Add new file (after extraction) 2023-06-08 00:46:32 +00:00
Albert Vaca Cintora
615fbc5383 Fix NPE 2023-06-07 18:06:30 +02:00
l10n daemon script
269f381db6 GIT_SILENT Add new file (after extraction) 2023-06-07 00:47:28 +00:00
l10n daemon script
ba6ac5ce42 GIT_SILENT made messages (after extraction) 2023-06-07 00:47:19 +00:00
Albert Vaca Cintora
06c1309a78 StaticMessages.sh for fastlane texts
Creates .pot files from txt files in the en-US store metadata and then
does the oposite for po files translated to the respective languages.

This should allow the translation teams to translate the store descriptions.
2023-06-07 00:01:38 +00:00
Albert Vaca Cintora
610c030963 Remove outdated store metadata
We now use fastlane
2023-06-06 23:35:33 +02:00
l10n daemon script
f07e7eeea8 GIT_SILENT made messages (after extraction) 2023-06-06 00:46:26 +00:00
Albert Vaca Cintora
6fc5ae66b8 Add license headers to files missing it 2023-06-05 12:21:15 +02:00
Albert Vaca Cintora
337433000c More logging 2023-06-05 10:36:02 +02:00
Albert Vaca Cintora
79f805caeb Add missing break caught in code review 2023-06-05 10:29:27 +02:00
Albert Vaca Cintora
0d6c252479 Remove loopback link provider left in by mistake 2023-06-05 10:29:27 +02:00
Albert Vaca Cintora
ec7df33170 Add missing cancelTimer 2023-06-05 10:29:27 +02:00
Albert Vaca Cintora
8c1fe000f6 Start the timer before the packet has been sent
Fixes the loopback provider starting the timer after the paring is
already done, causing it to unpair after 30 seconds.
2023-06-05 10:29:27 +02:00
Albert Vaca Cintora
b14df9d09c Fail earlier if we don't have a certificate 2023-06-05 10:29:27 +02:00
Albert Vaca Cintora
a20fb00b7d Have a single PairingHandler for all links 2023-06-05 10:28:45 +02:00
Albert Vaca Cintora
476304d6fb Changes from code review 2023-06-04 18:05:48 +00:00
Albert Vaca Cintora
1ccf15010e Compute total number of packets sent and received by type 2023-06-04 18:05:48 +00:00
Albert Vaca Cintora
8ea82ff053 Add empty device list message 2023-06-04 17:22:34 +00:00
Albert Vaca Cintora
d4076245dd Prettier widget 2023-06-04 17:22:34 +00:00
Albert Vaca Cintora
afd4219732 More code review changes 2023-06-04 17:22:34 +00:00
Albert Vaca Cintora
7d3cf9690a Rename RunCommandWidgetConfig -> RunCommandWidgetConfigActivity 2023-06-04 17:22:34 +00:00
Albert Vaca Cintora
a977b6da17 Improvements from code review 2023-06-04 17:22:34 +00:00
Albert Vaca Cintora
11634b2cde Allow having widgets for more than once device
Rewrites the RunCommand widget. Now we can have different widgets for
different devices at the same time. Also removes the startService call
that could cause ForegroundServiceStartNotAllowedException on API 12+.
2023-06-04 17:22:34 +00:00
l10n daemon script
2fda82cd02 GIT_SILENT made messages (after extraction) 2023-06-04 00:46:32 +00:00
Albert Vaca Cintora
8ba4b532d4 Fix catch not working because broadcastUdpPacket starts a thread
We don't want to crash if we get onNetworkChange before tcpServer has been
initialized, however the way to do it was wrong because the exception was
being thrown from a new thread.
2023-06-03 18:59:14 +02:00
l10n daemon script
b201dadf12 GIT_SILENT Sync po/docbooks with svn 2023-06-03 01:49:41 +00:00
l10n daemon script
15b78d8a2d GIT_SILENT made messages (after extraction) 2023-06-03 00:46:48 +00:00
Albert Vaca Cintora
94c2ac3b4c Fix comment 2023-06-02 23:20:54 +02:00
Albert Vaca Cintora
969d78d404 Improvements from code review 2023-06-02 16:59:42 +00:00
Albert Vaca Cintora
a6ec1744b7 Use Jetpack Compose for the Device UI 2023-06-02 16:59:42 +00:00
Albert Vaca Cintora
03f50994ee Remove unused imports 2023-06-02 18:41:58 +02:00
l10n daemon script
582542451c GIT_SILENT made messages (after extraction) 2023-06-02 00:47:23 +00:00
l10n daemon script
5f8675ee43 GIT_SILENT made messages (after extraction) 2023-06-01 00:46:32 +00:00
Albert Vaca Cintora
8c86ef4ac5 Remove unused argument 2023-05-31 17:24:05 +02:00
Albert Vaca Cintora
537f2e35ac Add the option to cancel a pairing request we sent
BUG: 469877
2023-05-31 15:23:30 +00:00
l10n daemon script
f588bf9502 GIT_SILENT Sync po/docbooks with svn 2023-05-31 02:24:25 +00:00
l10n daemon script
c2bf8e8521 GIT_SILENT made messages (after extraction) 2023-05-31 00:47:33 +00:00
Albert Vaca Cintora
550e9b0c8b Use kotlin's apply 2023-05-30 17:23:18 +02:00
Albert Vaca Cintora
457721e8c7 Simplify loops 2023-05-30 17:23:18 +02:00
Albert Vaca Cintora
f26bd54be5 Enable the loopback link on Google test devices
See docs here: https://firebase.google.com/docs/test-lab/android/android-studio#modify_instrumented_test_behavior_for_testlab
2023-05-30 17:23:18 +02:00
l10n daemon script
eb843cf901 GIT_SILENT made messages (after extraction) 2023-05-30 00:46:11 +00:00
Albert Vaca Cintora
8b66bef865 Fix glitch displaying hint in add device dialog 2023-05-30 00:41:09 +02:00
Albert Vaca Cintora
28ed8209c4 Do not allow multi-line device names 2023-05-30 00:34:09 +02:00
Albert Vaca Cintora
f00e420535 Do not ignore exceptions in LanLink onStart
broadcastUdpPacket will throw if setupTcpListener isn't successful, and
at that point we no longer know the real issue. Re-throw exceptions in
setupTcpListener so we can see what goes wrong.
2023-05-30 00:14:39 +02:00
Albert Vaca Cintora
ad725e7a24 Release 1.25.0 2023-05-29 15:41:31 +02:00
Albert Vaca Cintora
947cd54cb0 Add fastlane
This is read by F-Droid, so it should fix our app not having an icon or
having outdated screenshots there.

Also, this can be used to update the Play Store by doing:
  fastlane supply --version-code <version code> --json-key <path to key>

In a future, it would be nice to update the StaticMessages.sh script so
it converts the app description here to .pot and back so we can have KDE
localization teams translate it and updates are automatically picked up.
2023-05-29 15:41:20 +02:00
Albert Vaca Cintora
14270ea71a Re-add file removed by mistake 2023-05-29 15:02:58 +02:00
Albert Vaca Cintora
46ecd2b05f Fix NPEs 2023-05-29 13:09:35 +02:00
Albert Vaca Cintora
2839793e9d SystemVolumePlugin: Do not call requestSinkList once per second
When playing music on Windows, we receive MPRIS player updates ~once per
second. This calls the MprisMediaSession updateMediaNotification function
which then calls updateCurrentPlayer which used to call
SystemVolumeProvider's startTrackingVolumeKeys (now renamed to
startListeningForSinks) which is quite bad because on each call:
 * It would add yet another copy of this to the listeners list
 * It would send a network packet to get the sinks from the other device
Now we only call startListeningForSinks when the tracked player changes.
2023-05-29 10:01:51 +00:00
Albert Vaca Cintora
ad53138928 Make linter happy 2023-05-29 03:37:46 +02:00
Albert Vaca Cintora
3a05548333 Remove unneeded overrides 2023-05-28 22:38:24 +02:00
Albert Vaca Cintora
d0ec7dd755 Make newInstance calls explicit 2023-05-28 12:05:08 +02:00
Albert Vaca Cintora
53f14e9c77 Bump AGP plugin version 2023-05-28 11:45:29 +02:00
l10n daemon script
853e5b1903 GIT_SILENT made messages (after extraction) 2023-05-28 00:46:42 +00:00
Albert Vaca Cintora
6b450d558e Add NonNull annotations to Plugin and PluginFactory 2023-05-26 22:19:21 +02:00
Albert Vaca Cintora
b065d5c1d1 Remove unused functions 2023-05-26 20:21:56 +02:00
Albert Vaca Cintora
c70d03dbe8 Catch BackgroundServiceStartNotAllowedException 2023-05-26 20:21:40 +02:00
Albert Vaca Cintora
9e39cbd979 Remove unused & commented code 2023-05-26 20:03:14 +02:00
Albert Vaca Cintora
1e904fcbfa Re-add missing setContentIntent
Removed by mistake in d09ad45e11
2023-05-26 20:02:26 +02:00
Albert Vaca Cintora
38edbd260a Removed unused privateKey field from BaseLink 2023-05-26 19:56:59 +02:00
Albert Vaca Cintora
62cf2d6b44 Add NonNull annotations to Link classes 2023-05-26 19:54:57 +02:00
Albert Vaca Cintora
f172ffd129 Added TODO 2023-05-25 16:09:09 +00:00
Albert Vaca Cintora
0f3ad63ee3 Make sending the payloads async
Fixes the bug described in !359. Since we made sending packets sequential
in !90 (including the payload part of the packet) we could be blocking the
queue for up to 10 seconds if the other end didn't fetch our payload.

This makes the payload part async by default but keeps the option to make
it sync, since we want that behavior in CompositeUploadFileJob.
2023-05-25 16:09:09 +00:00
Albert Vaca Cintora
ea1675c76a Hide presenter plugin when other device is a phone
The use case doesn't make sense
2023-05-25 18:04:54 +02:00
Albert Vaca Cintora
40b05fbe8f Remove reference to Device when the view is destroyed 2023-05-25 02:41:46 +02:00
Albert Vaca Cintora
ae23413971 Refactor BackgroundService
Added a new KdeConnect Application class that holds the Devices now, while
BackgroundService "only" takes care of the LinkProviders.

Since KdeConnect subclasses Application we have the guarantee that it will
exist as long as our process does, so we can use it as a singleton. This
removes the "BackgroundService.RunCommand" hack (which sent an Intent that
would awake BackgroundService in case it wasn't running already and then
call our code in a callback). This saves lots of round trips between the
system and us and makes things simpler (and stack traces useful) by making
the code sequential.

We already had an Application subclass that I moved to a new helper, which
now the KdeConnect class initializes together with all the other helpers.
2023-05-24 19:28:02 +02:00
Albert Vaca Cintora
a6eea8e996 Handle SocketTimeoutException when sending a payload
This means that the whole packet queue was 10 seconds blocked (!) which
I think we shouldn't let happen, but for now I've added this error message.
2023-05-24 17:08:40 +00:00
Albert Vaca Cintora
58a304a81e Catch SocketException from sendPacket
So we get to print the error message saying which packet got lost and so
that the sending loop doesn't crash.
2023-05-24 17:08:40 +00:00
Albert Vaca Cintora
da3ee10567 Kotlin style 2023-05-24 19:07:36 +02:00
Albert Vaca Cintora
f6ea3e01b0 Remove outdated comments 2023-05-24 17:12:19 +02:00
l10n daemon script
e372c47789 GIT_SILENT Sync po/docbooks with svn 2023-05-24 01:52:28 +00:00
Albert Vaca Cintora
72af26016b Cleanup 2023-05-23 21:41:57 +02:00
l10n daemon script
e17073bb7b GIT_SILENT Sync po/docbooks with svn 2023-05-23 02:26:35 +00:00
Krzysztof Dziembała
faedc2e6c8 Fix tests: allow unnamed modules to access internal APIs 2023-05-21 21:46:01 +02:00
Pluto Hu
4081dc593d Add search functionality for filtering apps by name in NotificationFilterActivity. 2023-05-20 19:02:49 +00:00
Albert Vaca Cintora
2246d3f458 Bump dependencies 2023-05-20 14:00:41 +02:00
Albert Vaca Cintora
9f64cbbfaf Remove backwards compat flags for AGP 2023-05-20 14:00:09 +02:00
Simon Redman
d2d43c55a7 Bump OpenJDK to v17 as required by latest Gradle version
## Summary

Gradle version bump in 921d0ee884 (probably) is incompatible with Java 11.

Fix Gitlab CI by increasing Java version, as required by latest Gradle version.

## Test Plan

### Before:
Gitlab CI does not work, complaining about Java version. See for example: https://invent.kde.org/network/kdeconnect-android/-/jobs/950701

### After:
Gitlab CI does work
2023-05-17 16:29:08 +00:00
l10n daemon script
948d075fb3 GIT_SILENT made messages (after extraction) 2023-05-17 00:46:57 +00:00
Albert Vaca Cintora
e409ec37eb Simplify constructor call 2023-05-10 16:57:47 +02:00
Albert Vaca Cintora
ed0f97de1b Remove redundant supports-screens section 2023-05-10 16:57:44 +02:00
Albert Vaca Cintora
961a839ac3 Fix crash when onNetworkChanged was called before link was initialized
This race condition could happen on slow devices
2023-05-03 19:38:21 +02:00
l10n daemon script
b189556d6a GIT_SILENT made messages (after extraction) 2023-05-03 00:48:41 +00:00
l10n daemon script
ddd2e741f4 GIT_SILENT Sync po/docbooks with svn 2023-05-01 02:12:57 +00:00
l10n daemon script
4f1cff22ab GIT_SILENT made messages (after extraction) 2023-05-01 00:51:22 +00:00
l10n daemon script
72130c0cfa GIT_SILENT Sync po/docbooks with svn 2023-04-30 02:43:27 +00:00
l10n daemon script
2147dc5313 GIT_SILENT made messages (after extraction) 2023-04-30 00:47:55 +00:00
l10n daemon script
52a27790d0 GIT_SILENT made messages (after extraction) 2023-04-29 00:49:48 +00:00
l10n daemon script
9c18f3f799 GIT_SILENT made messages (after extraction) 2023-04-28 00:48:19 +00:00
l10n daemon script
7e32d2962f GIT_SILENT made messages (after extraction) 2023-04-27 00:48:25 +00:00
Albert Vaca Cintora
5d2b9557e7 Release 1.24.5 2023-04-26 22:29:19 +02:00
Albert Vaca Cintora
891da46c3c Simplify how we get the app's version code 2023-04-26 22:29:11 +02:00
Dmitry Yudin
e9bc90d91a Modernize ComposeSendActivity
* UI update for the old compose send screen.
* Introduces Jetpack Compose.
* Migrates activity to Kotlin.
* Fixes "send" button being next to "clear".
2023-04-26 20:16:08 +00:00
Albert Vaca Cintora
921d0ee884 Upgrde gradle and AGP 2023-04-25 23:51:30 +02:00
Albert Vaca Cintora
3e8948339d Call requireView only once 2023-04-25 23:51:30 +02:00
Albert Vaca Cintora
e56f73da83 Fix ConcurrentModificationException when device disconnects while iterating 2023-04-25 21:50:02 +00:00
Albert Vaca Cintora
c250d2c674 Merge branch 'kdeconnect-android-mouse_pad_prefs_fix' 2023-04-25 10:22:46 +02:00
Jakub Wiśnia
c15469f477 Add gyro sensitivity pref 2023-04-25 10:22:12 +02:00
l10n daemon script
73f15149b6 GIT_SILENT made messages (after extraction) 2023-04-25 00:50:42 +00:00
Dmitry Yudin
118a35c304 Merge remote-tracking branch 'kubawis/master' into mouse_pad_prefs_fix
# Conflicts:
#	res/values/strings.xml
#	res/xml/mousepadplugin_preferences.xml
#	src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java
2023-04-25 01:41:51 +02:00
Albert Vaca Cintora
acb869b21c Bump the TLS version to 1.2
TLSv1.2 is supported on all the Android versions we support now.
TLSv1.3 is only supported in API 29+. Although we could conditionally
enable it on 29+, it seems to cause problems (disconnects & reconnects
when the LanLink gets refreshed) also on newer devices.
2023-04-24 20:52:45 +00:00
Dmitry Yudin
71706879d0 Fix onBackPressed after screen rotation
Moved onBackPressedDispatcher.addCallback(s) to onResume
2023-04-24 17:37:19 +00:00
Dmitry Yudin
f5b3523ec6 Fix applying preferences changes when returned from plugin settings 2023-04-23 22:50:05 +02:00
l10n daemon script
8639938584 GIT_SILENT Sync po/docbooks with svn 2023-04-23 02:36:32 +00:00
l10n daemon script
011ee20fbb GIT_SILENT made messages (after extraction) 2023-04-23 00:48:42 +00:00
Albert Vaca Cintora
763859d478 Release 1.24.3 2023-04-22 23:49:03 +02:00
Albert Vaca Cintora
c19019a500 Comment verbose logs 2023-04-22 23:49:03 +02:00
Albert Vaca Cintora
b1a2257d4d Fix incorrect text showing in main activity plugin cards 2023-04-22 23:49:03 +02:00
Albert Vaca Cintora
32d6a346ab Disable MouseReceiver Plugin so we don't need accessibility API
Google doesn't like it :( Hopefully we can re-add it back soon.
2023-04-22 22:44:49 +02:00
Albert Vaca Cintora
2616a7a529 Release 1.24.2 2023-04-22 18:45:49 +02:00
Albert Vaca Cintora
f16a770fee Revert "Do not force TLS v1"
Breaks compatibility with older desktop clients.
We need to bump the protocol version to do this.

This reverts commit e2dbc39e3a.
2023-04-22 14:02:10 +02:00
l10n daemon script
45e84ce23e GIT_SILENT made messages (after extraction) 2023-04-22 00:50:34 +00:00
Dmitry Yudin
9e5c9ca11a Migrate MainActivity to Kotlin
And replace deprecated onBackPressed with OnBackPressedCallback(s)
2023-04-20 13:54:27 +02:00
l10n daemon script
f9e74caa50 GIT_SILENT made messages (after extraction) 2023-04-19 00:49:25 +00:00
l10n daemon script
6feb8f478c GIT_SILENT Sync po/docbooks with svn 2023-04-18 01:57:48 +00:00
l10n daemon script
2e38789836 GIT_SILENT made messages (after extraction) 2023-04-18 00:47:09 +00:00
l10n daemon script
1f106ee9f1 GIT_SILENT Sync po/docbooks with svn 2023-04-17 02:36:29 +00:00
l10n daemon script
86e3faf75a GIT_SILENT made messages (after extraction) 2023-04-17 00:48:00 +00:00
Albert Vaca Cintora
9379d89d03 Lower delay between broadcasts 2023-04-16 11:46:53 +02:00
Albert Vaca Cintora
90787911fa Fix subtitle not disappearing when changing fragment 2023-04-16 11:42:12 +02:00
l10n daemon script
8b8106bad8 GIT_SILENT made messages (after extraction) 2023-04-16 00:47:50 +00:00
l10n daemon script
b20ccf16bd GIT_SILENT made messages (after extraction) 2023-04-15 00:48:50 +00:00
l10n daemon script
b4f8f1befa GIT_SILENT made messages (after extraction) 2023-04-14 00:46:17 +00:00
Albert Vaca Cintora
61190189ec Release 1.24.1 2023-04-13 19:10:54 +02:00
Albert Vaca Cintora
4c6cda711f Fix "find my phone" notification being dismissable
Dismissing the notification caused the alarm to keep playing without a
way to stop it.

BUG: 446349
2023-04-13 19:10:12 +02:00
Albert Vaca Cintora
64b32003cc Fix cards still visibile if device got unpaired with the app open 2023-04-13 18:55:49 +02:00
Albert Vaca Cintora
39fb60b81b Rename binding to pairingBinding 2023-04-13 18:55:28 +02:00
Albert Vaca Cintora
431312fcd0 Bump dependencies 2023-04-13 18:37:27 +02:00
Albert Vaca Cintora
6c8c6dd63e Fix compatibility with API 20 2023-04-13 17:56:13 +02:00
Dmitry Yudin
8aeefded7c Main activity responsive layout 2023-04-13 17:56:13 +02:00
Albert Vaca Cintora
e2dbc39e3a Do not force TLS v1
Stop specifying the TLS version we want and let the system chose

Co-authored-by: Daniel Tang <danielzgtg.opensource@gmail.com>
2023-04-13 11:07:29 +00:00
Aditya Mehra
e07fe54d5c fix sms sync
Missing break statements causes sync issues and SMS to be parsed as MMS and leads to the URI of a SMS not being found within the MMS content and SMS sync failing.
2023-04-12 17:12:57 +00:00
l10n daemon script
6c2ffa5796 GIT_SILENT Sync po/docbooks with svn 2023-04-12 01:54:41 +00:00
l10n daemon script
f661c0d8d0 GIT_SILENT made messages (after extraction) 2023-04-12 00:49:10 +00:00
Albert Vaca Cintora
e2fd072839 Remove outdated comments 2023-04-11 13:08:23 +02:00
l10n daemon script
5b33200454 GIT_SILENT Sync po/docbooks with svn 2023-04-11 02:17:25 +00:00
l10n daemon script
d986a4e6db GIT_SILENT made messages (after extraction) 2023-04-11 00:47:41 +00:00
Mhammad Alloush
65d706fd75 MousePadPlugin: Change the blurb to highlight gyro mouse.
This needs translations. But should do for now for English language for now.
2023-04-10 08:59:41 +00:00
l10n daemon script
1cd11cf9fe GIT_SILENT made messages (after extraction) 2023-04-10 00:46:12 +00:00
Dmitry Yudin
b52fc8c3ec Add mouse buttons setting 2023-04-08 21:27:44 +00:00
Dmitry Yudin
c22453afca Add gyro switch and mouse buttons 2023-04-08 21:27:44 +00:00
l10n daemon script
81fe7adba5 GIT_SILENT Sync po/docbooks with svn 2023-04-07 01:49:05 +00:00
l10n daemon script
d4ba5d7375 GIT_SILENT made messages (after extraction) 2023-04-07 00:46:51 +00:00
l10n daemon script
129be45564 GIT_SILENT made messages (after extraction) 2023-04-06 00:47:06 +00:00
Krut Patel
642dce1168 Set android:exported to true for activities with intent filters
Required so that other apps can launch these activities.
2023-04-05 17:49:28 +00:00
Albert Vaca Cintora
b64b27bcae Release 1.24.0 2023-04-05 19:04:41 +02:00
Albert Vaca Cintora
98ffff5844 Revert "Switch desugaring lib to desugar_jdk_libs_nio"
This reverts commit 7efb1f81b5.

For some weird reason, mina-sshd works fine without desugaring NIO on
Android 5 but fails with `java.lang.NoClassDefFoundError: Failed resolution
of: Ljava/nio/channels/AsynchronousChannelGroup;` before reverting this
2023-04-05 18:56:01 +02:00
Albert Vaca Cintora
711065a8e6 Refactor share function to handle null URIs
BUG: 458278
2023-04-05 10:16:23 +00:00
Albert Vaca Cintora
5250fde0b1 Remove copyright and app description from About 2023-04-04 22:49:05 +00:00
Albert Vaca Cintora
f9ea5f0e77 Send preexisting notifications as silent
This avoids creating a popup for every existing notification after the
device connects.
2023-04-04 22:44:44 +00:00
Albert Vaca Cintora
a26e5fbb9c Add note so people add themselves to the author list 2023-04-05 00:38:02 +02:00
Isira Seneviratne
7efb1f81b5 Switch desugaring lib to desugar_jdk_libs_nio
Enables desugaring of the `Files` class, which is otherwise only available on API 26+.
2023-04-04 22:27:56 +00:00
Isira Seneviratne
d4378ffe3e Remove multidex library. 2023-04-04 22:21:00 +00:00
l10n daemon script
76f5005219 GIT_SILENT made messages (after extraction) 2023-04-04 00:46:47 +00:00
l10n daemon script
53638577f9 GIT_SILENT made messages (after extraction) 2023-04-03 00:45:41 +00:00
l10n daemon script
e5f221f891 GIT_SILENT made messages (after extraction) 2023-04-02 00:47:00 +00:00
Dmitry Yudin
ef902348bb More Material3 styling
Apply Material3 to dialogs, image buttons, switches and preferences.
Merge the landscape and portrait layouts for the MPRIS controls.
Move setting theme to application start instead of applying to every activity.
2023-04-01 21:33:03 +00:00
Albert Vaca Cintora
a1d7e822e7 Don't show any message if battery information is not available
BUG: 447498
2023-04-01 19:18:38 +00:00
Albert Vaca Cintora
4b775cff88 Prettier RunCommand widget & add preview
Co-authored-by: Maxim Leshchenko <cnmaks90@gmail.com>
2023-04-01 21:14:14 +02:00
l10n daemon script
3d2667a803 GIT_SILENT made messages (after extraction) 2023-04-01 00:50:50 +00:00
Albert Vaca Cintora
5dd9b48f74 Remove redundant check for permissions 2023-03-31 21:08:59 +02:00
l10n daemon script
1d794dae6a GIT_SILENT made messages (after extraction) 2023-03-31 00:46:49 +00:00
Dmitry Yudin
0ed11d2036 Show enabled plugins as cards 2023-03-29 18:22:27 +00:00
Albert Vaca Cintora
aef5af30ed Also in FindMyPhone activity 2023-03-29 20:07:58 +02:00
Albert Vaca Cintora
85d5b9e08f Use AppCompatButton to avoid the round borders of M3 buttons
Which are quite ugly when the buttons are very big.
2023-03-29 20:04:41 +02:00
Albert Vaca Cintora
a0e963c893 Revert "Use AppCompatButton to avoid the round borders of M3 buttons"
This reverts commit ca71ddef34.
2023-03-29 20:04:05 +02:00
Albert Vaca Cintora
ca71ddef34 Use AppCompatButton to avoid the round borders of M3 buttons
Which are quite ugly when the buttons are very big.
2023-03-29 19:43:15 +02:00
Manuel Jesús de la Fuente
6defead2ce Use M3 theme, switch to Material Dialogs
- Add Monet dynamic colors on the app's `onCreate()`
- Set parent in styles.xml to `Theme.Material3.DayNight.NoActionBar`
- Use `MaterialAlertDialogBuilder`
- In the About and About KDE fragments, it uses the M3 elevated style instead of outlines
- In `edit_text_alert_dialog_view.xml`, it uses the default theme style instead of specifying the one from MaterialComponents
- Added a todo in the settings fragment: Preference dialogs don't yet use the M3 style.

It complements https://invent.kde.org/network/kdeconnect-android/-/merge_requests/273, though the way that merge request accomplishes color theming is the one from before the onCreate dynamics color method
2023-03-29 17:39:25 +00:00
Albert Vaca Cintora
fd3c6f07da Changes from code review
Fix potential race condition and lower log level
2023-03-29 17:09:21 +00:00
Albert Vaca Cintora
aff2de8ebb Fix UUID containing characters that can't be dbus-exported
This broke pairing with the desktop app
2023-03-29 17:09:21 +00:00
Albert Vaca Cintora
cbc0749997 Do not use the ANDROID_ID as device ID
Since Android 8, this ID is stable across reinstalls of the app. This
causes other devices that already were paired with us to find a cert
mismatch and refuse to communicate with us after a reinstall or data wipe.
2023-03-29 17:09:21 +00:00
Albert Vaca Cintora
554769e1ef Fix plugins without permissions showing a generic explanation
This was because we only overrote the explanation in onCreate, which wasn't
called for plugins without permissions.
2023-03-29 19:01:57 +02:00
Albert Vaca Cintora
63718d5a58 Flip isIncompatible -> isCompatible 2023-03-29 18:51:32 +02:00
Albert Vaca Cintora
7670810155 Code review fixes 2023-03-29 16:32:40 +00:00
Albert Vaca Cintora
66a649313c Consolidate network listeners in BackgroundService
* Remove usage of deprecated WiFi ConnectivityManager
* Only listen for non-cellular network changes (where we can find devices)
* Do not listen for network changes also from PairingFragment
2023-03-29 16:32:40 +00:00
l10n daemon script
855ad36642 GIT_SILENT Sync po/docbooks with svn 2023-03-29 01:55:19 +00:00
l10n daemon script
0d1e358067 GIT_SILENT made messages (after extraction) 2023-03-29 00:47:12 +00:00
l10n daemon script
9b662776e8 GIT_SILENT Sync po/docbooks with svn 2023-03-28 02:17:52 +00:00
Jakub Wiśnia
6adb73bf5e Add separate sensitivity for gyroscope in plugin MousePad 2023-03-28 00:01:50 +02:00
Mhammad Alloush
e60c134d78 MousePadPlugin: Add gyro mouse
## Summary

This MR adds gyro mouse capability, which allows you to move the cursor of a connected device by simply moving the connected phone. It uses standard Android gyroscope sensors. Mainly aimed at usage with computers attached to very large screens (e.g. TV's), as using the touchpad as-is can feel somewhat unnatural.

While it does attempt pretty much the same thing as !285, this MR attempts to reduce redundancy as much as possible by simply extending the existing MousePadPlugin instead.

Tested on a Xiaomi Redmi Note 11, on a Samsung A71, and on a laptop running Arch Linux and KDE Plasma 5.27.3

## Test Plan

1. Make sure the 'Remote Input' plugin is enabled on the Android device.
2. Make sure the 'Virtual Input' plugin is enabled on the target device.
3. Open Plugin Settings -> Remote Input for the target device.
2. Enable the toggle for Gyro mouse.
3. Exit settings and go to the Remote Input activity for the target device.
4. Try moving the device around in 3D space.
5. Confirm that the mouse pointer moves predictably.
2023-03-27 20:58:48 +00:00
l10n daemon script
092b207aec GIT_SILENT Sync po/docbooks with svn 2023-03-27 02:40:27 +00:00
l10n daemon script
425011fadc GIT_SILENT made messages (after extraction) 2023-03-27 00:49:00 +00:00
l10n daemon script
738f60d671 GIT_SILENT made messages (after extraction) 2023-03-26 00:47:53 +00:00
Albert Vaca Cintora
118e045990 Replace Handlers by lightweight callbacks 2023-03-25 23:46:41 +00:00
Mihir Patel
b8cbd2b382 Adding support for per-app language preferences on Android 13 and later
Android 13 added the ability to select languages on a per-app basis. Supporting this feature simply requires us to provide a listing of all of the locales supported by the app: https://developer.android.com/guide/topics/resources/app-languages

This change adds a locales_config.xml file to list the locales and references this file in the application manifest
2023-03-25 19:25:39 +00:00
l10n daemon script
eb301341a5 GIT_SILENT made messages (after extraction) 2023-03-23 00:46:51 +00:00
Albert Vaca Cintora
58cbd49278 Use ConcurrentHashMap to fix ConcurrentModificationException 2023-03-22 20:12:27 +01:00
Albert Vaca Cintora
7bf2a40180 Rename updateComputerList -> updateDeviceList 2023-03-22 18:17:31 +01:00
l10n daemon script
e2a35fb97f GIT_SILENT made messages (after extraction) 2023-03-22 00:47:34 +00:00
l10n daemon script
a524fb8486 GIT_SILENT made messages (after extraction) 2023-03-21 00:47:36 +00:00
Nicolas Fella
d54f155b24 Add CI for debug PR builds
Add a debug and test CI. As the test coverage today is not much to get excited about, this is mostly a check that the app still builds, as well as a convenient way to download the prebuilt app for testing.
2023-03-21 00:00:03 +00:00
l10n daemon script
252e38cc07 GIT_SILENT made messages (after extraction) 2023-03-20 00:49:43 +00:00
Albert Vaca Cintora
25be43d88d Remove outdated comment 2023-03-20 00:06:16 +01:00
Albert Vaca Cintora
0933f6bb5f Bump Apache CommonsIO version
And the desugaring library as well. ThreadLocal.withInitial can now be
desugared, so we can use newer versions of CommonsIO.
2023-03-20 00:04:56 +01:00
Albert Vaca Cintora
33e8e0407b Upgrade from SpongyCastle 1.58 to BouncyCastle 1.70
SpongyCastle was a fork of BouncyCastle needed before Android 3.0 because
of a conflict with Android's own version of BC. It's no longer needed and
rarely receives updates anymore [1]. Furthermore the version we were using
was from 2015 and had security issues (although I'm not sure we were
affected by them since we only use it to generate certificates).

With this change we now also use Java's standard library to read the certs
from a byte[] since the standard CertificateFactory can already do that.


[1] https://github.com/rtyley/spongycastle/issues/34
2023-03-19 23:00:25 +00:00
Albert Vaca Cintora
51dfa2dd8c Delay initialization of sftp server 2023-03-19 20:26:09 +00:00
Albert Vaca Cintora
1ba9e59872 SftpPlugin: use MANAGE_EXTERNAL_STORAGE instead of SAF in Android 11+
https://developer.android.com/training/data-storage/manage-all-files

BUG: 447636
BUG: 464431
2023-03-19 20:26:09 +00:00
Albert Vaca Cintora
76c3cc4c57 Prevent spam of "Invalid packet" when using remote mouse 2023-03-19 11:57:35 +01:00
l10n daemon script
79275c51cf GIT_SILENT made messages (after extraction) 2023-03-19 00:47:28 +00:00
Albert Vaca Cintora
83b0c04d51 Release 1.23.2 2023-03-18 21:54:30 +01:00
Albert Vaca Cintora
3aba448bea Rollback android-device-names to 1.x
Was bumped in f2f1930cec but it was crashing
with "database disk image is malformed" and not returning a human name
2023-03-18 20:40:51 +01:00
l10n daemon script
5633183d57 GIT_SILENT made messages (after extraction) 2023-03-18 00:58:31 +00:00
Albert Vaca Cintora
a9e6fcff6a Release 1.23.1 2023-03-17 20:03:19 +01:00
Albert Vaca Cintora
772eae7a4c Revert "Make linter happy: use try-with-resources"
Those require higher API levels. Added comment.

This reverts commit 84e78e4bda.
2023-03-17 19:31:26 +01:00
Albert Vaca Cintora
ff3239f876 Open the notification plugin settings even without permissions 2023-03-17 19:16:04 +01:00
Albert Vaca Cintora
2de744aad8 Allow configuring plugins without permissions
This fixes the bug introduced in f97216 which prevented configuring storage
locations because the plugin wasn't returned by `getPlugin` when there are
no storage locations present.
2023-03-17 19:03:20 +01:00
Albert Vaca Cintora
01f44f524a package -> packet typo fixes 2023-03-17 18:57:02 +01:00
Albert Vaca Cintora
d9e641ae28 Update comments 2023-03-17 18:35:27 +01:00
Albert Vaca Cintora
f2f1930cec Bump versions of deps 2023-03-17 18:35:27 +01:00
l10n daemon script
bf13753022 GIT_SILENT made messages (after extraction) 2023-03-17 00:57:06 +00:00
Albert Vaca Cintora
afa0f89644 Bump target SDK to 32
https://developer.android.com/about/versions/12/behavior-changes-12
2023-03-16 12:00:32 +00:00
Albert Vaca Cintora
764a8f8525 Release 1.23.0 2023-03-16 12:51:42 +01:00
Albert Vaca Cintora
605c06b1e6 Fixes as per code review 2023-03-16 11:42:26 +00:00
Albert Vaca Cintora
26c1c2ac67 Remove commented if 2023-03-16 11:42:26 +00:00
Albert Vaca Cintora
e103d8cd47 Change version int to constant 2023-03-16 11:42:26 +00:00
Albert Vaca Cintora
9f037f841e Merge resources specific to API 21+ into the main resources 2023-03-16 11:42:26 +00:00
Albert Vaca Cintora
1002275ebe Remove even more checks for deprecated Android versions 2023-03-16 11:42:26 +00:00
Albert Vaca Cintora
3bfae23d1b Share Plugin: improvements for Android 11
* Do not ask for WRITE_EXTERNAL_STORAGE in Android 11+ (writing to "Downloads" is [allowed by default since 11](https://stackoverflow.com/questions/70248631/starting-from-android11-do-i-need-to-comply-to-androids-saf-just-to-even-creat)).
* Do not check for permissions before receiving a file. Try and let it error out, instead of silently doing nothing.
* Fix not offering to open content:// urls (we checked the URLs to be file:// urls to then convert them to content://).
* Better permission explanation text.
2023-03-15 22:01:39 +00:00
Albert Vaca Cintora
d2edd7a325 Sort plugins by name in preferences 2023-03-13 17:27:27 +00:00
l10n daemon script
a638d66dd3 GIT_SILENT Sync po/docbooks with svn 2023-03-13 02:06:46 +00:00
l10n daemon script
830a20fb87 GIT_SILENT made messages (after extraction) 2023-03-13 00:48:34 +00:00
l10n daemon script
148dd30d1b GIT_SILENT Sync po/docbooks with svn 2023-03-12 03:12:47 +00:00
l10n daemon script
74d3cea4f2 GIT_SILENT made messages (after extraction) 2023-03-12 00:46:05 +00:00
l10n daemon script
fd188b3e87 GIT_SILENT made messages (after extraction) 2023-03-11 00:48:46 +00:00
l10n daemon script
635452bcf6 GIT_SILENT made messages (after extraction) 2023-03-10 00:46:48 +00:00
l10n daemon script
03c0b06e39 GIT_SILENT made messages (after extraction) 2023-03-09 00:45:44 +00:00
l10n daemon script
0c24a78516 GIT_SILENT made messages (after extraction) 2023-03-08 00:46:51 +00:00
Albert Vaca Cintora
54952f11a5 Fix NPE 2023-03-07 15:41:58 +01:00
Albert Vaca Cintora
aae3518bb9 Remove specific list of ciphers
We can let the system use the full list when negotiating since we no longer
support Android < 5.0
2023-03-07 13:04:30 +00:00
l10n daemon script
4b3ddf9cc4 GIT_SILENT made messages (after extraction) 2023-03-07 00:46:47 +00:00
Albert Vaca Cintora
038f6e8598 Make linter happy: misc fixes 2023-03-06 00:02:45 +01:00
Albert Vaca Cintora
3212252e37 Make linter happy: use lambdas 2023-03-06 00:02:45 +01:00
Albert Vaca Cintora
84e78e4bda Make linter happy: use try-with-resources 2023-03-06 00:01:47 +01:00
Albert Vaca Cintora
cef68db2a6 Make linter happy: keep nullable/nonnull annotations 2023-03-06 00:01:47 +01:00
Albert Vaca Cintora
00f3fc43d0 Make linter happy: add final 2023-03-05 23:47:42 +01:00
Albert Vaca Cintora
20cc67e63a Extract strings 2023-03-05 22:26:19 +01:00
Albert Vaca Cintora
298b00a82e Reuse a single TrustManager 2023-03-05 22:11:58 +01:00
Albert Vaca Cintora
f97216c797 Sftp permissions aren't optional 2023-03-05 22:11:58 +01:00
Albert Vaca Cintora
0f4643e502 Project-wide optimize imports 2023-03-05 22:11:58 +01:00
Albert Vaca Cintora
42a7d5df41 Apply linter suggestions about left/right -> begin/end 2023-03-05 22:11:58 +01:00
Albert Vaca Cintora
6734efd227 Fix obviously broken out-of-bounds in loop 2023-03-05 21:42:17 +01:00
Albert Vaca Cintora
9cbfed84de Remove pre-kitkat code paths in SFTP plugin
We no longer support KitKat. This simplifies the SFTP plugin quite a bit since it contained a diferent code path for pre-kitkat devices
2023-03-05 16:15:03 +00:00
Albert Vaca Cintora
5b73c2bac2 Remove checks for SDK versions older than our target SDK
Removes conditional code for older Android versions (IceCreamSandwitch, JellyBean, KitKat, Lollipop) since we no longer support Android older than Lollipop (5.0).

This doesn't remove KitKat support in the SFTP plugin since it's a bit more convoluted. It will be done in a separate MR.
2023-03-05 16:14:01 +00:00
l10n daemon script
c72be8fe78 GIT_SILENT Sync po/docbooks with svn 2023-03-05 02:32:22 +00:00
l10n daemon script
d74d9cf279 GIT_SILENT made messages (after extraction) 2023-03-05 00:50:23 +00:00
Albert Vaca Cintora
296a055221 Bump project deps 2023-03-04 16:06:28 +01:00
Albert Vaca Cintora
3cf48ffd14 Add missing calls to super.onRequestPermissionsResult 2023-03-04 16:00:23 +01:00
Albert Vaca Cintora
adbf78afdb Fix typo 2023-03-04 15:59:55 +01:00
Bacteria Dev
118d8784fa Hide 'Send Clipboard' from DeviceFragment when READ_LOGS permission is granted
On Android 10 and above, Clipboard needs to be manually sent. Recently the app was shipped with the patches so that users can use adb to grant the required permissions for automatic clipboard propagation.

In case the permissions were granted for automatic clipboard propagation, 'Send Clipboard' option was hidden from persistent notification but was not removed from the DeviceFragment. This MR addresses this.
2023-03-04 12:34:59 +00:00
l10n daemon script
938985beff GIT_SILENT made messages (after extraction) 2023-03-02 00:54:29 +00:00
l10n daemon script
cf0e4d4100 GIT_SILENT Sync po/docbooks with svn 2023-02-28 02:30:01 +00:00
Matthew Mirvish
80d780ed85 Use colon instead of hyphen when building command control ids
Certain implementations of the protocol (namely GSConnect) use UUIDS
for the device IDS/command keys, which contain hyphens in them. The
current implementation of RunCommandControlsProviderService (used for
the android 11 power menu command control things) gives the controls
unique IDS with "{deviceid}-{commandkey}" and then tries to split on the
hyphen, which obviously breaks if the device id or command key contain
hyphens. This patch changes it to uses colons to separate them instead.

Note that I've only tested this with GSconnect, but I see no reason why
it wouldn't work with the normal KDE connect implementation too, unless
it uses colons in IDs.
2023-02-27 22:17:07 +00:00
l10n daemon script
cb5939f1df GIT_SILENT Sync po/docbooks with svn 2023-02-27 02:35:20 +00:00
l10n daemon script
e2041305fb GIT_SILENT made messages (after extraction) 2023-02-27 01:00:22 +00:00
l10n daemon script
f71256f8f6 GIT_SILENT Sync po/docbooks with svn 2023-02-26 02:22:04 +00:00
Albert Vaca Cintora
f6c61f4e4b Specify the foreground service type in Android 29+ 2023-02-25 11:31:18 +01:00
l10n daemon script
1011cdcb33 GIT_SILENT Sync po/docbooks with svn 2023-02-25 03:01:22 +00:00
l10n daemon script
1c650bea83 GIT_SILENT made messages (after extraction) 2023-02-25 01:00:02 +00:00
l10n daemon script
7d3f76cb87 GIT_SILENT made messages (after extraction) 2023-02-18 00:58:09 +00:00
l10n daemon script
08b26264b3 GIT_SILENT Sync po/docbooks with svn 2023-02-17 02:15:20 +00:00
l10n daemon script
8c1e8a8d35 GIT_SILENT Sync po/docbooks with svn 2023-02-16 03:04:18 +00:00
l10n daemon script
953785f5ad GIT_SILENT Sync po/docbooks with svn 2023-02-09 02:28:57 +00:00
l10n daemon script
fd16407a53 GIT_SILENT Sync po/docbooks with svn 2023-02-08 03:02:12 +00:00
l10n daemon script
4b5e632f5b GIT_SILENT made messages (after extraction) 2023-02-08 00:58:34 +00:00
l10n daemon script
7a1aadeeec GIT_SILENT made messages (after extraction) 2023-02-05 00:57:27 +00:00
l10n daemon script
bbe90633fd GIT_SILENT Sync po/docbooks with svn 2023-02-02 02:21:08 +00:00
l10n daemon script
d38bbd4476 GIT_SILENT made messages (after extraction) 2023-02-02 00:57:30 +00:00
Albert Vaca Cintora
c36cb98d50 Release 1.22.2 2023-02-01 17:41:03 +01:00
l10n daemon script
0e14382541 GIT_SILENT made messages (after extraction) 2023-02-01 00:56:44 +00:00
l10n daemon script
42d8e6b2e2 GIT_SILENT Sync po/docbooks with svn 2023-01-31 02:15:51 +00:00
Simon Redman
26ceeceb45 Switch to jitpack build for smsmms library
Is the third time the charm?

f-droid does not allow libraries pulled from non-listed maven repositories, thus the build fails in f-droid:
https://gitlab.com/fdroid/fdroiddata/-/jobs/3654530159#L236
> Found unknown maven repo 'https://invent.kde.org/api/v4/projects/72/packages/maven' at settings.gradle

This MR changes to use [jitpack](https://jitpack.io/#org.kde.invent.sredman/android-smsmms/kdeconnect-1-21-0), which is an allowed repository.
2023-01-30 23:07:27 +00:00
l10n daemon script
ba77fa786f GIT_SILENT made messages (after extraction) 2023-01-30 00:57:09 +00:00
l10n daemon script
aca039433c GIT_SILENT made messages (after extraction) 2023-01-29 00:57:31 +00:00
Albert Vaca Cintora
bbbc315cf7 Release 1.22.1 2023-01-27 18:25:54 +01:00
Albert Vaca Cintora
d74ad30740 Disable jetifier
Android Studio suggested it since we are not using it
2023-01-27 18:24:02 +01:00
Albert Vaca Cintora
b5d9293103 Remove REQUEST_INSTALL_PACKAGES permission
Google keeps being annoying and now they got really strict with which apps
can be published to the Play Store using this permission
2023-01-27 18:23:16 +01:00
Albert Vaca Cintora
9eb047e7a1 Actually, release 1.22 2023-01-23 23:34:24 +01:00
Albert Vaca Cintora
82415b3fa7 Release 1.21.2 2023-01-23 23:26:07 +01:00
Albert Vaca Cintora
15fec5e515 Bump deps 2023-01-23 23:24:27 +01:00
Simon Redman
bcf080f6eb [SMS Plugin] Change android-smsmms to in-house build until upstream supports SDK31
## Summary

Android apps which target SDK 31+ require specifying the mutability of any PENDING_INTENT. This is not supported in the upstream android-smsmms library: https://github.com/klinker41/android-smsmms/pull/193

Until the above PR is merged, we need a solution. I have pulled the code into https://invent.kde.org/sredman/android-smsmms and published the package in the Maven repository in gitlab.

BUG: 464392

## Test Plan

### Before:
Attempting to send an SMS or MMS message using kdeconnect-sms results in no message being sent, and an error being logged:

> V/Sending message: Sending new SMS
> E/Sending message: Exception
>     java.lang.IllegalArgumentException: org.kde.kdeconnect_tp: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
>     Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
>         at android.app.PendingIntent.checkFlags(PendingIntent.java:382)
>         at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:673)
>         at android.app.PendingIntent.getBroadcast(PendingIntent.java:660)
>         at com.klinker.android.send_message.Transaction.sendSmsMessage(Transaction.java:267)
>         at com.klinker.android.send_message.Transaction.sendNewMessage(Transaction.java:158)
>         at com.klinker.android.send_message.Transaction.sendNewMessage(Transaction.java:172)
>         at org.kde.kdeconnect.Plugins.SMSPlugin.SmsMmsUtils.sendMessage(SmsMmsUtils.java:188)
>         at org.kde.kdeconnect.Plugins.SMSPlugin.SMSPlugin.onPacketReceived(SMSPlugin.java:414)
>         at org.kde.kdeconnect.Device.onPacketReceived(Device.java:570)
>         <snipped for brevity>

### After:
SMS and MMS sends normally.
2023-01-23 22:02:01 +00:00
Simon Redman
9db4c885a5 [SMS Plugin] Fix handling for addresses list of multi-target group messages
## Summary

Fix a logic error in the SMS plugin which caused it to skip the addresses of other targets when reporting group messages.

Notionally, this bug originated with the logic change in !197, where everything switched to using the android-smsmms library.

BUG: 464555

## Test Plan

### Before:
Group messages would be returned as single-target messages between you and the sender, meaning the desktop app would have a bad time showing them.

### After:
Group messages are returned with the appropriate list of addresses, the desktop app groups them appropriately.
2023-01-22 20:16:06 +00:00
l10n daemon script
67dc1f1fae GIT_SILENT made messages (after extraction) 2023-01-22 00:56:52 +00:00
Simon Redman
e76da90fa9 Correct logic error when determining which "new" messages to return
With the old logic, the mostRecentTimestamp would effectively only be updated once, the first time the app noticed an SMS/MMS. This means that, until the app was next closed, it would return every message sent or received after that timestamp. Since the app doesn't crash as often as it used to, this can grow to a quite significant number of messages.
2023-01-20 21:21:30 -05:00
l10n daemon script
f74336da30 GIT_SILENT made messages (after extraction) 2023-01-21 00:57:51 +00:00
l10n daemon script
154ce67a7c GIT_SILENT made messages (after extraction) 2023-01-16 00:56:06 +00:00
l10n daemon script
207d7b7eb0 GIT_SILENT made messages (after extraction) 2023-01-15 00:55:51 +00:00
l10n daemon script
9870150155 GIT_SILENT Sync po/docbooks with svn 2023-01-14 02:14:51 +00:00
l10n daemon script
141f711b8d GIT_SILENT Sync po/docbooks with svn 2023-01-13 02:51:57 +00:00
l10n daemon script
02ee982991 GIT_SILENT made messages (after extraction) 2023-01-13 00:55:52 +00:00
l10n daemon script
b5b2ebde9d GIT_SILENT Sync po/docbooks with svn 2023-01-12 02:15:28 +00:00
l10n daemon script
cd2dde90cd GIT_SILENT Sync po/docbooks with svn 2023-01-11 02:16:02 +00:00
l10n daemon script
725c302caa GIT_SILENT made messages (after extraction) 2023-01-11 00:56:46 +00:00
l10n daemon script
2680859acc GIT_SILENT made messages (after extraction) 2023-01-10 00:55:40 +00:00
l10n daemon script
7148038ea9 GIT_SILENT made messages (after extraction) 2023-01-09 00:55:14 +00:00
Albert Vaca Cintora
889e0d5c52 Release 1.21.1 2023-01-08 13:30:42 +01:00
l10n daemon script
c075cc0b63 GIT_SILENT made messages (after extraction) 2023-01-08 00:58:22 +00:00
l10n daemon script
91c0097158 GIT_SILENT made messages (after extraction) 2023-01-07 00:48:52 +00:00
l10n daemon script
a25e88238d GIT_SILENT made messages (after extraction) 2023-01-06 00:47:14 +00:00
l10n daemon script
4336ea4761 GIT_SILENT made messages (after extraction) 2023-01-05 00:47:29 +00:00
Albert Vaca Cintora
58fabe06bf Revert "Separate persistent notification channel based on whether devices are connected"
This reverts commit 9f9b565ce6.

Explained here: https://invent.kde.org/network/kdeconnect-android/-/merge_requests/299#note_590553

# Conflicts:
#	src/org/kde/kdeconnect/BackgroundService.java
2023-01-04 15:14:02 +01:00
l10n daemon script
7d7162bb5b GIT_SILENT Sync po/docbooks with svn 2023-01-04 02:43:22 +00:00
l10n daemon script
b0655fc9d0 GIT_SILENT made messages (after extraction) 2023-01-04 00:48:28 +00:00
Albert Vaca Cintora
1241a560f2 Change the explanation of the permission location
The app is being rejected from the Play Store because we are not explicit
about why whe require the location when the app is in the background.
2023-01-03 18:33:14 +01:00
l10n daemon script
f7b55e4416 GIT_SILENT Sync po/docbooks with svn 2023-01-03 02:57:06 +00:00
l10n daemon script
ff78fdfd59 GIT_SILENT made messages (after extraction) 2023-01-03 00:46:55 +00:00
Albert Vaca Cintora
8b01db3c34 Release 1.21.0 2023-01-02 22:29:09 +01:00
Albert Vaca Cintora
25728eae18 If you use FINE_LOCATION you also should declare COARSE_LOCATION 2023-01-02 22:28:48 +01:00
Albert Vaca Cintora
dc7fc46e62 Revert "Comment out MouseReceiverPlugin"
This reverts commit a663f4d106.
2023-01-02 22:08:09 +01:00
Albert Vaca Cintora
2b1e4dcb23 Bump deps 2023-01-02 22:00:32 +01:00
Albert Vaca Cintora
97b7eb71cf Delete tests broken since 2019
I spent a few hours and couldn't fix them
2023-01-02 21:54:21 +01:00
Harry Cheng
bb0ab51d3b Do not send cancel packet from disabled apps 2023-01-02 16:08:04 +08:00
l10n daemon script
f503b18993 GIT_SILENT made messages (after extraction) 2023-01-02 01:00:29 +00:00
l10n daemon script
58e9a5d2b6 GIT_SILENT made messages (after extraction) 2023-01-01 00:56:32 +00:00
Albert Vaca Cintora
fd34e56675 Use registerNetworkCallback to listen to network changes
ConnectivityManager.CONNECTIVITY_ACTION was deprecated in Android 9
2022-12-31 00:35:08 +01:00
Albert Vaca Cintora
4be79b52ae Show a toast if keyboard input is not supported 2022-12-31 00:03:41 +01:00
Albert Vaca Cintora
028a2992c9 Bump deps 2022-12-30 23:58:13 +01:00
Albert Vaca Cintora
bdfc21cf64 Hopefully fix NPE 2022-12-29 18:51:12 +01:00
Albert Vaca Cintora
5225d0b200 Release 1.20.2 2022-12-28 19:29:55 +01:00
Albert Vaca Cintora
54e5224f20 Fix minifier deleting "unused" xml that were actually used 2022-12-28 19:29:23 +01:00
Albert Vaca Cintora
6ab846cbbd Fix NPE 2022-12-28 17:31:52 +01:00
Albert Vaca Cintora
ea66605ef0 Fix crash on Android 7 2022-12-28 17:31:42 +01:00
Albert Vaca Cintora
c903c5d3fd Release 1.20.1
Untagged because it's for the play store only.
2022-12-28 00:26:58 +01:00
Albert Vaca Cintora
a663f4d106 Comment out MouseReceiverPlugin
The Play Store asks us a video showing why we need the accessibility
service, and I can't make it work so I can't record the video.
Removing this plugin removes the need for any accessibility permissions.
2022-12-28 00:14:49 +01:00
Albert Vaca Cintora
1a79c3e77a Release 1.20 2022-12-27 23:53:45 +01:00
Albert Vaca Cintora
6fbd923c60 Bump dependencies and targetSdkVersion
Motivation: We can't publish to the Play Store with a targetSdkVersion < 31

The new targetSdk required two changes:

* Specifying when activities, services and receivers should be exported or
  not to other apps. For the ones I wasn't sure of what we want, I made
  them exported to not break something.
* Specifying when a PendingIntent should be mutable or immutable. I made
  them all mutable for now.
2022-12-27 23:53:13 +01:00
l10n daemon script
f7b25bfaf7 GIT_SILENT Sync po/docbooks with svn 2022-12-26 02:16:12 +00:00
l10n daemon script
e61af6fa37 GIT_SILENT Sync po/docbooks with svn 2022-12-25 02:42:13 +00:00
Felix Fischer
9df91577d3 Add monochrome drawable (i.e. Android 13 themed icon)
## Summary

Since a lot of devices now have Android 13, some users might want support for the new themed app icons.
This adds support for these, by adding a monochrome drawable (just the default icon with only the phone border and K) in `res/drawable-v24/ic_launcher_monochrome.xml` and then referencing this in `res/minimap-anydpi-v26/ic_laucher(_round).xml`.

## Test Plan

This can be tested by simply compiling and installing the app as usual on any device running Android 13.
After installing the app, the option for an adaptive colour theme will need to be enabled:
- OneUI5: Long-press home screen > Wallpaper and Style > Colour palette > enable colour palette and check "Apply palette to app icons"
- Pixel: Long-press home screen > Wallpaper & style > check "Themed icons"

The app icon should now follow the system theme (on some devices only on home screen, on others both home screen and app drawer).

![Screenshot_20221204_231210](/uploads/75ec96d9a3b17486622e32148cfd775c/Screenshot_20221204_231210.png)
2022-12-19 22:12:03 +00:00
l10n daemon script
39ff1da82d GIT_SILENT Sync po/docbooks with svn 2022-12-15 02:14:58 +00:00
l10n daemon script
081bb4ebc8 GIT_SILENT Sync po/docbooks with svn 2022-12-14 02:40:53 +00:00
l10n daemon script
7f47dcf860 GIT_SILENT made messages (after extraction) 2022-12-11 00:46:45 +00:00
l10n daemon script
e5c976eeee GIT_SILENT Sync po/docbooks with svn 2022-12-08 02:10:14 +00:00
l10n daemon script
88b396b6f0 GIT_SILENT made messages (after extraction) 2022-12-04 00:45:55 +00:00
l10n daemon script
04067984ed GIT_SILENT Sync po/docbooks with svn 2022-12-03 02:07:49 +00:00
l10n daemon script
99d2f1b0df GIT_SILENT Sync po/docbooks with svn 2022-12-02 02:52:03 +00:00
l10n daemon script
f71d5b5e8c GIT_SILENT Sync po/docbooks with svn 2022-11-21 02:01:50 +00:00
l10n daemon script
5b346d9c7a GIT_SILENT Sync po/docbooks with svn 2022-11-20 02:31:18 +00:00
l10n daemon script
dd1aa4731d GIT_SILENT made messages (after extraction) 2022-11-19 00:45:11 +00:00
l10n daemon script
a941f2bf3a GIT_SILENT made messages (after extraction) 2022-11-17 00:45:23 +00:00
l10n daemon script
9ed7571e1d GIT_SILENT made messages (after extraction) 2022-11-16 00:46:27 +00:00
l10n daemon script
d9c2da2fdb GIT_SILENT made messages (after extraction) 2022-11-12 00:46:58 +00:00
l10n daemon script
4398d791a3 GIT_SILENT made messages (after extraction) 2022-11-11 00:45:24 +00:00
Simon Redman
c477cbe33c Fix lint errors in SMSHelper.java
## Summary

Clean up a bunch of lint errors in SMSHelper.java. Some of these are null issues which in theory might prevent a crash.

## Test Plan

No functional changes are expected. Fetching SMS still works for me.
2022-11-08 00:47:31 +00:00
Philip Cohn-Cort
a63d549739 Remove some unused imports
## Summary

Very basic maintenance MR to remove unused imports from code files.
2022-11-07 23:15:06 +00:00
l10n daemon script
d57072186a GIT_SILENT Sync po/docbooks with svn 2022-11-07 02:32:01 +00:00
l10n daemon script
10a7b50b0d GIT_SILENT made messages (after extraction) 2022-11-06 00:46:23 +00:00
l10n daemon script
d594f45914 GIT_SILENT made messages (after extraction) 2022-11-04 00:45:33 +00:00
l10n daemon script
45f557b0fe GIT_SILENT made messages (after extraction) 2022-11-03 00:45:43 +00:00
l10n daemon script
2448277211 GIT_SILENT made messages (after extraction) 2022-11-02 00:48:02 +00:00
l10n daemon script
817d00d2d8 GIT_SILENT Sync po/docbooks with svn 2022-11-01 02:04:45 +00:00
Yannik Sembritzki
9f9b565ce6 Separate persistent notification channel based on whether devices are connected
This allows users to selectively disable the persistent notification when no devices are connected.

BUG: 460927
2022-10-31 21:03:27 +00:00
Wojciech Matuszewski
70d70dcb33 Use a common thread pool instead of creating new threads manually
## Summary

Spawning new threads in Java is costly. This MR aims to use a common thread pool instead.

I've replaced all cases where a new thread is started just to perform a task in the background. This does not include cases where a reference to the newly created thread is kept as a part of application logic – this is probably a problem in itself, but it exceeds the scope of this quick optimization. ;) 

There was a couple of cases where a new thread was spawned just to sleep for a while an then change the state on a View on the main thread. I've replaced those with posting those deferred tasks to the View's message queue.

## Test Plan

Everything should work the same as it has before, just a bit faster and easier on the memory.
2022-10-31 20:59:17 +00:00
Arun Parolikkal
31d1882c6a Basic support for A12 colors
Colors don't work in some cards, menus and the hamburger menu

## Summary

I'm trying to make KDEConnect pull colours from the Material 3.0
wallpaper in Android 12. I've managed to do this to an extent by editing
the xml files in res/values*. There are, however, certain UI elements
that do not respond to the changes I've made, with no obvious files
where their colours may be changed.

## Screenshots

### The devices screen looks great (Except "KDE Connect Devices" in the
App bar isn't themed.)

![Screenshot_20211215-175156_KDE_Connect](/uploads/f00a03a9857a696acbf3ba14a0d01e23/Screenshot_20211215-175156_KDE_Connect.png)

### The hamburger menu has a white color in light mode. Don't know where
this is set and how to change it

![Screenshot_20211215-175206_KDE_Connect](/uploads/349b2bf72596a388e445f7462672b358/Screenshot_20211215-175206_KDE_Connect.png)

### Three dot menu has a white colour

![Screenshot_20211215-175210_KDE_Connect](/uploads/4a3204de26233ac3f6ea612358e9387d/Screenshot_20211215-175210_KDE_Connect.png)

### Add new devices looks good too
![Screenshot_20211215-175221_KDE_Connect](/uploads/78db4cd796ba31bfb763b9e2fae6e216/Screenshot_20211215-175221_KDE_Connect.png)

### Not the popup menus though

![Screenshot_20211215-175225_KDE_Connect](/uploads/a0fb8dbf4c0cc1fd3a2774d5ff8fda00/Screenshot_20211215-175225_KDE_Connect.png)

### Cards in the About section are still white

![Screenshot_20211215-175235_KDE_Connect](/uploads/18d1b3337af45eb7c9bcb157a0b34357/Screenshot_20211215-175235_KDE_Connect.png)

### Dark mode works fine

![Screenshot_20211215-175255_KDE_Connect](/uploads/3c2777e3f97ab7f377c6ace8b83297f2/Screenshot_20211215-175255_KDE_Connect.png)

### But again, some UI elements like the hamburger menu aren't themed.

![Screenshot_20211215-175302_KDE_Connect](/uploads/2ea118e6a352bcf4d5dc8760495d7b12/Screenshot_20211215-175302_KDE_Connect.png)

I'll keep trying to figure out how to make these elements to their
proper colours, but I've done a lot of searching through the source and
couldn't figure out how. I'm absolutely new to Android development. Help
please.

## Test Plan

For the changes made thus far, none are needed.
2022-10-31 16:43:18 -04:00
l10n daemon script
aacd0fa32a GIT_SILENT Sync po/docbooks with svn 2022-10-31 02:39:16 +00:00
l10n daemon script
cfc67f6a3a GIT_SILENT Sync po/docbooks with svn 2022-10-24 02:03:06 +00:00
l10n daemon script
9bed548dc3 GIT_SILENT Sync po/docbooks with svn 2022-10-22 11:22:29 +00:00
l10n daemon script
b0d2e6f822 GIT_SILENT Sync po/docbooks with svn 2022-10-21 02:09:38 +00:00
l10n daemon script
48e0ff2714 GIT_SILENT Sync po/docbooks with svn 2022-10-20 02:55:57 +00:00
Wojciech M
9af94884f9 fix channel names not being set when creating notification channels 2022-10-17 20:42:07 +02:00
l10n daemon script
67e4b27915 GIT_SILENT made messages (after extraction) 2022-10-15 00:46:11 +00:00
l10n daemon script
8038f58507 GIT_SILENT made messages (after extraction) 2022-10-14 00:46:37 +00:00
Isira Seneviratne
90ac4d68cf Use NotificationChannelCompat. 2022-10-10 20:49:52 +00:00
Isira Seneviratne
59303c1d0f Update Gradle Plugin to 7.2.2. 2022-10-10 20:49:22 +00:00
Simon Redman
5487d72c29 [SMS Plugin] Return conversation results one-by-one to more quickly populate the GUI
## Summary

Since !158, fetching messages has been painfully slow. This is because, instead of making one cursor (database) call, we needed to make two per conversation.

Unless someone finds a conversations URI which works on Samsung devices and reliably returns data, there isn't much we can do about that. What we can do, is return each conversation more quickly to get the UI populated and to prevent blocking the main thread forever.

This attempts to return conversations ordered by most-recent first. If the conversations URI returns junk for the thread date, it will return in an undefined order.

## Test Plan

#itworksforme
2022-10-10 20:44:19 +00:00
l10n daemon script
8c6a8b87db GIT_SILENT Sync po/docbooks with svn 2022-10-09 02:07:50 +00:00
l10n daemon script
69d335fe7a GIT_SILENT made messages (after extraction) 2022-10-09 00:47:47 +00:00
l10n daemon script
d2d6856b85 GIT_SILENT Sync po/docbooks with svn 2022-10-05 01:58:46 +00:00
l10n daemon script
9bd3ec3087 GIT_SILENT Sync po/docbooks with svn 2022-10-03 02:40:16 +00:00
l10n daemon script
0d71aa5ba8 GIT_SILENT Sync po/docbooks with svn 2022-10-02 02:48:20 +00:00
l10n daemon script
b51657555a GIT_SILENT Add new file (after extraction) 2022-09-30 00:43:48 +00:00
l10n daemon script
8fc3d6f51a GIT_SILENT made messages (after extraction) 2022-09-23 00:44:48 +00:00
l10n daemon script
1106788e46 GIT_SILENT made messages (after extraction) 2022-09-22 00:44:24 +00:00
l10n daemon script
90fa265447 GIT_SILENT made messages (after extraction) 2022-09-20 00:45:18 +00:00
Albert Vaca Cintora
801e9a2647 Remove individual contributors' contact buttons from About
To encourage using project-wide, open channels instead of private emails.
2022-09-18 23:43:58 +02:00
637 changed files with 26699 additions and 18769 deletions

18
.gitignore vendored
View File

@@ -1,15 +1,15 @@
local.properties
.gradle/
.idea/
out/
gen/
bin/
build/
target/
classes/
gradle
/.gradle/
/.idea/
/out/
/gen/
/bin/
/build/
/target/
/classes/
*.iml
*.keystore
!debug.keystore
.directory
GPUCache/
/release/

68
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,68 @@
# SPDX-FileCopyrightText: 2023 Nicolas Fella <nicolas.fella@gmx.de>
# SPDX-FileCopyrightText: 2023 Simon Redman <simon@ergotech.com>
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#
# Test this pipeline locally by:
# - Set up Docker on your machine, if not already set up
# - Set up gitlab-runner, as described here: https://stackoverflow.com/a/52724374
# - Run `gitlab-runner exec docker --docker-privileged assembleDebug`
variables:
ANDROID_COMPILE_SDK: "33"
ANDROID_BUILD_TOOLS: "34.0.0"
ANDROID_SDK_TOOLS: "10406996"
default:
tags:
- Linux
image: ubuntu:22.04
before_script:
# Prepare system for use of sdkmanager
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 openjdk-17-jdk-headless
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip
# Create the directory structure around cmdline-tools that sdkmanager is expecting
- mkdir -p sdk/cmdline-tools
- unzip android-sdk.zip
- mv cmdline-tools sdk/cmdline-tools/latest
# Update the environment
- export ANDROID_HOME=$PWD/sdk
- export PATH=$PATH:$PWD/sdk/cmdline-tools/latest/bin
# (this line should fail if sdkmanager is moved out of that directory in the future)
- type sdkmanager
# Install SDK packages
- echo y | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
- echo y | sdkmanager "platform-tools" >/dev/null
- echo y | sdkmanager "emulator" >/dev/null
- echo y | sdkmanager "platform-tools" >/dev/null
- echo y | sdkmanager "tools" >/dev/null
- echo y | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | sdkmanager --licenses
# Re-enable checking for EPIPE and allow execution of Gradle wrapper script
- set -o pipefail
- chmod +x ./gradlew
stages:
- build
- test
lintDebug:
stage: build
script:
- ./gradlew generateLicenseReport
- ./gradlew -Pci --console=plain lintDebug -PbuildDir=lint
assembleDebug:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- build/outputs/
debugTests:
stage: test
script:
- ./gradlew -Pci --console=plain testDebug

View File

@@ -1,28 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SPDX-FileCopyrightText: 2023 Albert Vaca Cintora <albertvaka@gmail.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.kde.kdeconnect_tp"
android:versionCode="11910"
android:versionName="1.19.1">
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
android:versionCode="13209"
android:versionName="1.32.9">
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- <uses-permission android:name="android.permission.BLUETOOTH" /> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> -->
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
@@ -40,24 +56,31 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.READ_LOGS" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="KDE Connect"
android:label="@string/kde_connect"
android:banner="@mipmap/ic_launcher_banner"
android:supportsRtl="true"
android:allowBackup="false"
android:dataExtractionRules="@xml/data_extraction_rules"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/KdeConnectTheme.NoActionBar"
android:name="org.kde.kdeconnect.MyApplication">
android:name="org.kde.kdeconnect.KdeConnect"
android:enableOnBackInvokedCallback="true"
android:requestLegacyExternalStorage="true"> <!-- requestLegacyExternalStorage is only used in Android 10: https://developer.android.com/training/data-storage/use-cases#opt-out-in-production-app -->
<receiver
android:name="com.android.mms.transaction.PushReceiver"
@@ -83,6 +106,7 @@
<service
android:name="org.kde.kdeconnect.Plugins.RemoteKeyboardPlugin.RemoteKeyboardService"
android:label="@string/remote_keyboard_service"
android:exported="true"
android:permission="android.permission.BIND_INPUT_METHOD">
<intent-filter>
<action android:name="android.view.InputMethod" />
@@ -95,17 +119,26 @@
<activity
android:name="org.kde.kdeconnect.UserInterface.MainActivity"
android:label="KDE Connect"
android:theme="@style/KdeConnectTheme.NoActionBar">
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<activity
android:name="org.kde.kdeconnect.UserInterface.PluginSettingsActivity"
android:label="@string/device_menu_plugins"
android:exported="false"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -114,6 +147,7 @@
<activity
android:name="org.kde.kdeconnect.UserInterface.CustomDevicesActivity"
android:label="@string/custom_devices_settings"
android:exported="false"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -122,21 +156,15 @@
<activity
android:name="org.kde.kdeconnect.Plugins.SharePlugin.SendFileActivity"
android:label="KDE Connect"
android:exported="true"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
<receiver android:name="org.kde.kdeconnect.KdeConnectBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data
android:host="kdeconnect"
android:path="/"
android:scheme="package" />
</intent-filter>
<receiver android:name="org.kde.kdeconnect.KdeConnectBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
@@ -158,7 +186,8 @@
android:label="@string/findmyphone_title"
android:launchMode="singleInstance" />
<receiver android:name="org.kde.kdeconnect.Plugins.FindMyPhonePlugin.FindMyPhoneReceiver">
<receiver android:name="org.kde.kdeconnect.Plugins.FindMyPhonePlugin.FindMyPhoneReceiver"
android:exported="true">
<intent-filter>
<action android:name="org.kde.kdeconnect.Plugins.FindMyPhonePlugin.foundIt" />
</intent-filter>
@@ -175,14 +204,14 @@
android:name="org.kde.kdeconnect.Plugins.MprisPlugin.MprisActivity"
android:label="@string/open_mpris_controls"
android:launchMode="singleTop"
android:theme="@style/KdeConnectTheme.NoActionBar"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
<receiver android:name="org.kde.kdeconnect.Plugins.MprisPlugin.MprisMediaNotificationReceiver">
<receiver android:name="org.kde.kdeconnect.Plugins.MprisPlugin.MprisMediaNotificationReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
@@ -191,28 +220,29 @@
<activity
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandActivity"
android:label="@string/pref_plugin_runcommand"
android:exported="false"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
<activity
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidgetDeviceSelector"
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidgetConfigActivity"
android:excludeFromRecents="true"
android:label="@string/pref_plugin_runcommand"
android:launchMode="singleTask"
android:noHistory="true"
android:screenOrientation="user"
android:theme="@style/Theme.AppCompat.Light.Dialog" />
android:screenOrientation="user"/>
<service
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidgetDataProviderService"
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.CommandsRemoteViewsService"
android:exported="false"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<receiver
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidget"
android:label="@string/pref_plugin_runcommand">
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidgetProvider"
android:label="@string/pref_plugin_runcommand"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
@@ -225,7 +255,8 @@
android:resource="@xml/remotecommandplugin_widget" />
</receiver>
<activity android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandUrlActivity">
<activity android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandUrlActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
@@ -242,6 +273,7 @@
android:name="org.kde.kdeconnect.Plugins.BigscreenPlugin.BigscreenActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/pref_plugin_bigscreen"
android:exported="true"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity"
android:windowSoftInputMode="stateHidden|adjustResize">
<meta-data
@@ -251,6 +283,7 @@
<activity
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity"
android:label="@string/pref_plugin_mousepad"
android:exported="false"
android:launchMode="singleTop"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
@@ -259,8 +292,10 @@
</activity>
<activity
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.ComposeSendActivity"
android:label="Compose send"
android:parentActivityName="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity">
android:label="@string/compose_send_title"
android:exported="false"
android:parentActivityName="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity" />
@@ -268,6 +303,7 @@
<activity
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.SendKeystrokesToHostActivity"
android:label="@string/pref_plugin_mousepad_send_keystrokes"
android:exported="true"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -283,6 +319,7 @@
android:name="org.kde.kdeconnect.Plugins.PresenterPlugin.PresenterActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/pref_plugin_presenter"
android:exported="false"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity"
android:windowSoftInputMode="stateHidden|adjustResize">
<meta-data
@@ -291,6 +328,7 @@
</activity>
<activity
android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareActivity"
android:exported="true"
android:label="@string/manifest_label_share">
<intent-filter>
<action android:name="android.intent.action.SEND" />
@@ -312,7 +350,8 @@
android:value="org.kde.kdeconnect.Plugins.SharePlugin.ShareChooserTargetService" />
</activity>
<receiver android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareBroadcastReceiver">
<receiver android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="org.kde.kdeconnect.Plugins.SharePlugin.CancelShare" />
</intent-filter>
@@ -330,6 +369,7 @@
<service
android:name="org.kde.kdeconnect.Plugins.NotificationsPlugin.NotificationReceiver"
android:exported="true"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
@@ -337,6 +377,7 @@
</service>
<service
android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareChooserTargetService"
android:exported="true"
android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
<intent-filter>
<action android:name="android.service.chooser.ChooserTargetService" />
@@ -344,6 +385,7 @@
</service>
<service
android:name="org.kde.kdeconnect.Plugins.MouseReceiverPlugin.MouseReceiverService"
android:exported="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
@@ -362,8 +404,6 @@
android:value="org.kde.kdeconnect.UserInterface.PluginSettingsActivity" />
</activity>
<activity android:name="org.kde.kdeconnect.Plugins.PhotoPlugin.PhotoActivity" />
<activity
android:name="org.kde.kdeconnect.UserInterface.TrustedNetworksActivity"
android:label="@string/trusted_networks"
@@ -403,6 +443,7 @@
<service
android:name="org.kde.kdeconnect.Plugins.ClibpoardPlugin.ClipboardTileService"
android:icon="@drawable/ic_baseline_content_paste_24"
android:exported="true"
android:label="@string/send_clipboard"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
@@ -410,7 +451,9 @@
</intent-filter>
</service>
<service android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandControlsProviderService" android:label="@string/kde_connect"
<service android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandControlsProviderService"
android:label="@string/kde_connect"
android:exported="true"
android:permission="android.permission.BIND_CONTROLS">
<intent-filter>
<action android:name="android.service.controls.ControlsProviderService" />

View File

@@ -9,7 +9,7 @@ KDE Connect is a multi-platform app that allows your devices to communicate (eg:
- **Multimedia remote control**: Use your phone as a remote for Linux media players.
- **Virtual touchpad**: Use your phone screen as your computer's touchpad and keyboard.
All this without wires, over the already existing WiFi network, and using TLS encryption.
All this without wires, over the already existing Wi-Fi network, and using TLS encryption.
## About this app
@@ -25,7 +25,7 @@ A lot of useful information, including how to get started working on KDE Connect
For bug reporting, please use [KDE's Bugzilla](https://bugs.kde.org). Please do not use the issue tracker in GitLab since we want to keep everything in one place.
To contribute patches, use [KDE Connect's Gitlab](https://invent.kde.org/kde/kdeconnect-android/).
To contribute patches, use [KDE Connect's Gitlab](https://invent.kde.org/network/kdeconnect-android/).
On Gitlab (as well as on our [old Phabricator](https://phabricator.kde.org/tag/kde_connect/)) you can find a task list with stuff to do and links to other relevant resources.
It is a good idea to also subscribe to the [KDE Connect mailing list](https://mail.kde.org/mailman/listinfo/kdeconnect).
@@ -34,4 +34,4 @@ Please know that all translations for all KDE apps are handled by the [localizat
## License
[GNU GPL v2](https://www.gnu.org/licenses/gpl-2.0.html) and [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.html)
If you are reading this from Github, you should know that this is just a mirror of the [KDE Project repo](https://invent.kde.org/network/kdeconnect-android/).
If you are reading this from GitHub, you should know that this is just a mirror of the [KDE Project repo](https://invent.kde.org/network/kdeconnect-android/).

View File

@@ -22,6 +22,30 @@ function import_po_files # First parameter will be a path that will contain seve
# https://github.com/python-babel/babel/issues/566
find "$podir" -name '*.po' -exec msgattrib --no-obsolete -o {} {} \;
ANSI_COLORS_DISABLED=1 a2po import --ignore-fuzzy --android res/ --gettext $podir
# Generate the locales_config.xml
pushd res
echo '<?xml version="1.0" encoding="utf-8"?>' > xml/locales_config.xml
echo '<locale-config xmlns:android="http://schemas.android.com/apk/res/android">' >> xml/locales_config.xml
transform_locale_regex='(\w+)-r(\w+)'
# Add en-US as the first locale so that is the fallback, and also because it won't be handled in the following loop
echo -e '\t<locale android:name="en-US"/>' >> xml/locales_config.xml
for i in values-*; do
if [ -d "${i}" ]; then
if [ -e "${i}/strings.xml" ]; then
locale="${i:7}"
if [[ "${locale}" =~ $transform_locale_regex ]]; then
# Special case to turn locales like "en-rUS", "en-rGB" into "en-US" and "en-GB"
transformed_locale="${BASH_REMATCH[1]}-${BASH_REMATCH[2]}"
echo -e "\t<locale android:name=\"${transformed_locale}\"/>" >> xml/locales_config.xml
else
echo -e "\t<locale android:name=\"${locale}\"/>" >> xml/locales_config.xml
fi
fi
fi
done
echo "</locale-config>" >> xml/locales_config.xml
popd
}

View File

@@ -1,203 +0,0 @@
import com.android.build.gradle.AppExtension
import com.android.build.gradle.api.ApkVariantOutput
import com.android.build.gradle.api.ApplicationVariant
import com.github.jk1.license.render.TextReportRenderer
buildscript {
ext.kotlin_version = '1.6.10'
dependencies {
classpath 'com.android.tools.build:gradle:7.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
plugins {
id 'com.github.jk1.dependency-license-report' version '1.16'
}
def licenseResDir = new File("$projectDir/build/dependency-license-res")
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 31
defaultConfig {
minSdkVersion 14
targetSdkVersion 30
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
multiDexEnabled true
}
buildFeatures {
viewBinding true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['resources']
res.srcDirs = [licenseResDir, 'res']
assets.srcDirs = ['assets']
}
test {
java.srcDirs = ['tests']
}
}
packagingOptions {
resources {
merges += ['META-INF/DEPENDENCIES', 'META-INF/LICENSE', 'META-INF/NOTICE']
}
}
signingConfigs {
debug {
storeFile file("debug.keystore")
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
}
buildTypes {
debug {
minifyEnabled true
shrinkResources true
signingConfig signingConfigs.debug
}
// keep minifyEnabled false above for faster builds; set to 'true'
// when testing to make sure ProGuard/R8 is not deleting important stuff
release {
minifyEnabled true
shrinkResources true
}
}
lint {
abortOnError false
checkReleaseBuilds false
}
}
/**
* This is a special on-demand Gradle object.
*
* Its value will not be determined until someone calls one of the gitHashProvider.getXXX() methods.
*
* If it does not encounter an explicit 'return' statement, getHashProvider.isPresent() will return false.
*/
Provider<String> gitHashProvider = project.provider {
Process gitCommand = null
try {
// This invokes 'git' immediately, but does not wait for it to finish
gitCommand = 'git rev-parse --short HEAD'.execute([], project.rootDir)
} catch (IOException ignored) {
}
if (gitCommand == null) {
logger.log(LogLevel.WARN, "Could not make use of the 'git' command-line tool. Output filenames will not be customized.")
} else if (gitCommand.waitFor() == 0) {
// This call to '::getText' (using the 'text' Groovy accessor syntax) collects the
// output stream
return '-' + gitCommand.text.trim()
} else {
logger.log(
LogLevel.WARN,
"Could not determine which commit is currently checked out -" +
" did you download this code without the .git directory?"
)
}
}
// We know we can safely cast the 'android' type to the 'AppExtension' class because
// we used the 'com.android.application' plugin at the top of the file.
//
// Note the use of the '::all' extension method; unlike '::each', it can detect every
// object added to the collection, no matter in which build phase that happens.
(android as AppExtension).applicationVariants.all { ApplicationVariant v ->
logger.log(LogLevel.INFO, "Found a variant called '${v.name}'.")
if (v.buildType.debuggable) {
// We're looking at variants made from android.buildTypes.debug! This one
// might have multiple outputs, but only one output will be an APK file.
v.outputs.matching { it instanceof ApkVariantOutput }.all {
// Default output filename is "${project.name}-${v.name}.apk". We want
// the Git commit short-hash to be added onto that default filename.
(it as ApkVariantOutput).outputFileName = "${project.name}-${v.name}${gitHashProvider.getOrElse("")}.apk"
}
}
}
ext {
coroutines_version = '1.6.0'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.media:media:1.4.3'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.preference:preference:1.1.1'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'androidx.lifecycle:lifecycle-runtime:2.4.0'
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.0'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'com.google.android.material:material:1.5.0'
implementation 'com.jakewharton:disklrucache:2.0.2' //For caching album art bitmaps
implementation 'com.jaredrummler:android-device-names:1.1.9' //To get a human-friendly device name
implementation 'org.apache.sshd:sshd-core:0.14.0'
implementation 'org.apache.mina:mina-core:2.0.19' //For some reason, makes sshd-core:0.14.0 work without NIO, which isn't available until Android 8 (api 26)
//implementation('com.github.bright:slf4android:0.1.6') { transitive = true } // For org.apache.sshd debugging
implementation 'com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0' //For SSL certificate generation
implementation 'org.atteo.classindex:classindex:3.6'
annotationProcessor 'org.atteo.classindex:classindex:3.6'
implementation 'com.klinkerapps:android-smsmms:5.2.6' //For SMS and MMS purposes
implementation 'commons-io:commons-io:2.7'
implementation 'org.apache.commons:commons-collections4:4.4'
implementation 'org.apache.commons:commons-lang3:3.11'
// Kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
// Testing
testImplementation 'junit:junit:4.13.1'
testImplementation 'org.powermock:powermock-core:2.0.0'
testImplementation 'org.powermock:powermock-module-junit4:2.0.0'
testImplementation 'org.powermock:powermock-api-mockito2:2.0.0'
testImplementation 'org.mockito:mockito-core:2.23.0'
testImplementation 'org.skyscreamer:jsonassert:1.3.0'
// For device controls
implementation 'org.reactivestreams:reactive-streams:1.0.3'
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
}
licenseReport {
configurations = ALL
renderers = [new TextReportRenderer()]
}
generateLicenseReport.doLast {
def target = new File(licenseResDir, "raw/license")
target.parentFile.mkdirs()
target.text =
files("COPYING", "$projectDir/build/reports/dependency-license/THIRD-PARTY-NOTICES.txt")
.collect { it.getText() }.join('\n')
}
preBuild.dependsOn(generateLicenseReport)

364
build.gradle.kts Normal file
View File

@@ -0,0 +1,364 @@
import com.android.build.api.instrumentation.AsmClassVisitorFactory
import com.android.build.api.instrumentation.ClassContext
import com.android.build.api.instrumentation.ClassData
import com.android.build.api.instrumentation.InstrumentationParameters
import com.android.build.api.instrumentation.InstrumentationScope
import com.github.jk1.license.LicenseReportExtension
import com.github.jk1.license.render.ReportRenderer
import com.github.jk1.license.render.TextReportRenderer
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.MethodVisitor
import org.objectweb.asm.Opcodes.CHECKCAST
import org.objectweb.asm.Opcodes.INVOKESTATIC
buildscript {
dependencies {
classpath(libs.android.gradlePlugin)
classpath(libs.kotlin.gradlePlugin)
}
}
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.dependencyLicenseReport)
alias(libs.plugins.compose.compiler)
}
val licenseResDir = File("$projectDir/build/dependency-license-res")
fun String.runCommand(
workingDir: File = File("."),
timeoutAmount: Long = 60,
timeoutUnit: TimeUnit = TimeUnit.SECONDS
): String = ProcessBuilder(split("\\s(?=(?:[^'\"`]*(['\"`])[^'\"`]*\\1)*[^'\"`]*$)".toRegex()))
.directory(workingDir)
.redirectOutput(ProcessBuilder.Redirect.PIPE)
.redirectError(ProcessBuilder.Redirect.PIPE)
.start()
.apply { waitFor(timeoutAmount, timeoutUnit) }
.run {
val error = errorStream.bufferedReader().readText().trim()
if (error.isNotEmpty()) {
throw Exception(error)
}
inputStream.bufferedReader().readText().trim()
}
android {
namespace = "org.kde.kdeconnect_tp"
compileSdk = 35
defaultConfig {
minSdk = 21
targetSdk = 35
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
}
buildFeatures {
viewBinding = true
compose = true
buildConfig = true
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_9
targetCompatibility = JavaVersion.VERSION_1_9
// Flag to enable support for the new language APIs
isCoreLibraryDesugaringEnabled = true
}
kotlinOptions {
jvmTarget = "9"
}
androidResources {
generateLocaleConfig = true
}
sourceSets {
getByName("main") {
manifest.srcFile("AndroidManifest.xml")
java.setSrcDirs(listOf("src"))
resources.setSrcDirs(listOf("resources"))
res.setSrcDirs(listOf(licenseResDir, "res"))
assets.setSrcDirs(listOf("assets"))
}
getByName("test") {
java.setSrcDirs(listOf("tests"))
}
}
packaging {
resources {
merges += listOf("META-INF/DEPENDENCIES", "META-INF/LICENSE", "META-INF/NOTICE")
}
}
signingConfigs {
getByName("debug") {
storeFile = file("debug.keystore")
storePassword = "android"
keyAlias = "androiddebugkey"
keyPassword = "android"
}
}
buildTypes {
getByName("debug") {
isMinifyEnabled = false
isShrinkResources = false
signingConfig = signingConfigs.getByName("debug")
}
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
}
}
lint {
abortOnError = false
checkReleaseBuilds = false
}
applicationVariants.all {
val variant = this
logger.quiet("Found a variant called ${variant.name}")
if (variant.buildType.isDebuggable) {
variant.outputs.all {
val output = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl
if (output.outputFile.name.endsWith(".apk")) {
// Default output filename is "${project.name}-${v.name}.apk". We want
// the Git commit short-hash to be added onto that default filename.
try {
val hash = "git rev-parse --short HEAD".runCommand(workingDir = rootDir)
val newName = "${project.name}-${variant.name}-${hash}.apk"
logger.quiet(" Found an output file ${output.outputFile.name}, renaming to $newName")
output.outputFileName = newName
} catch (ignored: Exception) {
logger.warn("Could not make use of the 'git' command-line tool. Output filenames will not be customized.")
}
}
}
}
}
}
/**
* Fix PosixFilePermission class type check issue.
*
* It fixed the class cast exception when lib desugar enabled and minSdk < 26.
*/
abstract class FixPosixFilePermissionClassVisitorFactory :
AsmClassVisitorFactory<FixPosixFilePermissionClassVisitorFactory.Params> {
override fun createClassVisitor(
classContext: ClassContext,
nextClassVisitor: ClassVisitor
): ClassVisitor {
return object : ClassVisitor(instrumentationContext.apiVersion.get(), nextClassVisitor) {
override fun visitMethod(
access: Int,
name: String?,
descriptor: String?,
signature: String?,
exceptions: Array<out String>?
): MethodVisitor {
if (name == "attributesToPermissions") { // org.apache.sshd.sftp.common.SftpHelper.attributesToPermissions
return object : MethodVisitor(
instrumentationContext.apiVersion.get(),
super.visitMethod(access, name, descriptor, signature, exceptions)
) {
override fun visitTypeInsn(opcode: Int, type: String?) {
// We need to prevent Android Desugar modifying the `PosixFilePermission` classname.
//
// Android Desugar will replace `CHECKCAST java/nio/file/attribute/PosixFilePermission`
// to `CHECKCAST j$/nio/file/attribute/PosixFilePermission`.
// We need to replace it with `CHECKCAST java/lang/Enum` to prevent Android Desugar from modifying it.
if (opcode == CHECKCAST && type == "java/nio/file/attribute/PosixFilePermission") {
println("Bypass PosixFilePermission type check success.")
// `Enum` is the superclass of `PosixFilePermission`.
// Due to `Object` is not the superclass of `Enum`, we need to use `Enum` instead of `Object`.
super.visitTypeInsn(opcode, "java/lang/Enum")
} else {
super.visitTypeInsn(opcode, type)
}
}
}
}
return super.visitMethod(access, name, descriptor, signature, exceptions)
}
}
}
override fun isInstrumentable(classData: ClassData): Boolean {
return (classData.className == "org.apache.sshd.sftp.common.SftpHelper").also {
if (it) println("SftpHelper Found! Instrumenting...")
}
}
interface Params : InstrumentationParameters
}
/**
* Collections.unmodifiableXXX is not exist when Android API level is lower than 26.
* So we replace the call to Collections.unmodifiableXXX with the original collection by removing the call.
*/
abstract class FixCollectionsClassVisitorFactory :
AsmClassVisitorFactory<FixCollectionsClassVisitorFactory.Params> {
override fun createClassVisitor(
classContext: ClassContext,
nextClassVisitor: ClassVisitor
): ClassVisitor {
return object : ClassVisitor(instrumentationContext.apiVersion.get(), nextClassVisitor) {
override fun visitMethod(
access: Int,
name: String?,
descriptor: String?,
signature: String?,
exceptions: Array<out String>?
): MethodVisitor {
return object : MethodVisitor(
instrumentationContext.apiVersion.get(),
super.visitMethod(access, name, descriptor, signature, exceptions)
) {
override fun visitMethodInsn(
opcode: Int,
type: String?,
name: String?,
descriptor: String?,
isInterface: Boolean
) {
val backportClass = "org/kde/kdeconnect/Helpers/CollectionsBackport"
if (opcode == INVOKESTATIC && type == "java/util/Collections") {
val replaceRules = mapOf(
"unmodifiableNavigableSet" to "(Ljava/util/NavigableSet;)Ljava/util/NavigableSet;",
"unmodifiableSet" to "(Ljava/util/Set;)Ljava/util/Set;",
"unmodifiableNavigableMap" to "(Ljava/util/NavigableMap;)Ljava/util/NavigableMap;",
"emptyNavigableMap" to "()Ljava/util/NavigableMap;")
if (name in replaceRules && descriptor == replaceRules[name]) {
super.visitMethodInsn(opcode, backportClass, name, descriptor, isInterface)
val calleeClass = classContext.currentClassData.className
println("Replace Collections.$name call with CollectionsBackport.$name from $calleeClass success.")
return
}
}
super.visitMethodInsn(opcode, type, name, descriptor, isInterface)
}
}
}
}
}
override fun isInstrumentable(classData: ClassData): Boolean {
return classData.className.startsWith("org.apache.sshd") // We only need to fix the Apache SSHD library
}
interface Params : InstrumentationParameters
}
androidComponents {
onVariants { variant ->
variant.instrumentation.transformClassesWith(
FixPosixFilePermissionClassVisitorFactory::class.java,
InstrumentationScope.ALL
) { }
variant.instrumentation.transformClassesWith(
FixCollectionsClassVisitorFactory::class.java,
InstrumentationScope.ALL
) { }
}
}
dependencies {
// It has a bug that causes a crash when using PosixFilePermission and minSdk < 26.
// It has been used in SSHD Core.
// We have taken a workaround to fix it.
// See `FixPosixFilePermissionClassVisitorFactory` for more details.
coreLibraryDesugaring(libs.android.desugarJdkLibsNio)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.constraintlayout.compose)
implementation(libs.androidx.compose.ui.tooling.preview)
debugImplementation(libs.androidx.compose.ui.tooling)
implementation(libs.androidx.media)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.preference.ktx)
implementation(libs.androidx.recyclerview)
implementation(libs.androidx.swiperefreshlayout)
implementation(libs.androidx.documentfile)
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.extensions)
implementation(libs.androidx.lifecycle.common.java8)
implementation(libs.androidx.gridlayout)
implementation(libs.material)
implementation(libs.disklrucache) //For caching album art bitmaps
implementation(libs.slf4j.handroid)
implementation(libs.apache.sshd.core)
implementation(libs.apache.sshd.sftp)
implementation(libs.apache.sshd.scp)
implementation(libs.apache.sshd.mina)
implementation(libs.apache.mina.core)
//implementation("com.github.bright:slf4android:0.1.6") { transitive = true } // For org.apache.sshd debugging
implementation(libs.bcpkix.jdk15on) //For SSL certificate generation
implementation(libs.classindex)
kapt(libs.classindex)
// The android-smsmms library is the only way I know to handle MMS in Android
// (Shouldn't a phone OS make phone things easy?)
// This library was originally authored as com.klinkerapps at https://github.com/klinker41/android-smsmms.
// However, that version is under-loved. I have therefore made "some fixes" and published it.
// Please see https://invent.kde.org/sredman/android-smsmms/-/tree/master
implementation(libs.android.smsmms)
implementation(libs.logger)
implementation(libs.commons.io)
implementation(libs.commons.collections4)
implementation(libs.commons.lang3)
implementation(libs.univocity.parsers)
// Kotlin
implementation(libs.kotlin.stdlib.jdk8)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.coroutines.android)
// Testing
testImplementation(libs.junit)
testImplementation(libs.mockito.core)
testImplementation(libs.jsonassert)
// For device controls
implementation(libs.reactive.streams)
implementation(libs.rxjava)
}
licenseReport {
configurations = LicenseReportExtension.ALL
renderers = arrayOf<ReportRenderer>(TextReportRenderer())
}
tasks.named("generateLicenseReport") {
doLast {
val target = File(licenseResDir, "raw/license")
target.parentFile.mkdirs()
target.writeText(
files(
layout.projectDirectory.file("COPYING"),
layout.buildDirectory.file("reports/dependency-license/THIRD-PARTY-NOTICES.txt")
).joinToString(separator = "\n") {
it.readText()
}
)
}
}
tasks.named("preBuild") {
dependsOn("generateLicenseReport")
}

2
fastlane/Appfile Normal file
View File

@@ -0,0 +1,2 @@
json_key_file("/please/pass/the/key/using/--json-key/instead")
package_name("org.kde.kdeconnect_tp")

7
fastlane/README Normal file
View File

@@ -0,0 +1,7 @@
To upload translations to the Play Store, run from the root of the repo:
```
fastlane supply --skip_upload_screenshots --skip_upload_images --skip_upload_changelogs --json-key <path to the json key file>
```
F-Droid reads them directly from this directory for each release tag, so no action is needed.

View File

@@ -0,0 +1,40 @@
EXPORTS_POT_DIR=1
FILE_PREFIX=kdeconnect-android-store
function export_pot_dir # First parameter will be the path of the directory where we have to store the pot files
{
potdir=$1
txt2po --no-segmentation --progress=names -P -i ./metadata/android/en-US/short_description.txt -o $potdir/kdeconnect-android-store-short.pot
txt2po --no-segmentation --progress=names -P -i ./metadata/android/en-US/full_description.txt -o $potdir/kdeconnect-android-store-full.pot
}
function import_po_dirs # First parameter will be a path that will be a directory to the dirs for each lang and then all the .po files inside
{
podir=$1
# Some languages don't exist in Google Play or have different codes
declare -a to_delete=( "bs" "ca@valencia" "sr@ijekavian" "sr@ijekavianlatin" "sr@latin" "ia" "eo" "tg" )
for lang in "${to_delete[@]}"; do
if [ -d $podir/$lang ]; then
rm $podir/$lang/*
rmdir $podir/$lang
fi
done
declare -A to_rename=( ["az"]="az-AZ" ["cs"]="cs-CZ" ["da"]="da-DK" ["de"]="de-DE" ["el"]="el-GR" ["es"]="es-ES" ["eu"]="eu-ES"
["fi"]="fi-FI" ["fr"]="fr-FR" ["gl"]="gl-ES" ["he"]="iw-IL" ["hu"]="hu-HU" ["is"]="is-IS" ["it"]="it-IT"
["ja"]="ja-JP" ["ka"]="ka-GE" ["ko"]="ko-KR" ["nl"]="nl-NL" ["nn"]="no-NO" ["pl"]="pl-PL" ["pt"]="pt-PT"
["ru"]="ru-RU" ["sv"]="sv-SE" ["ta"]="ta-IN" ["tr"]="tr-TR")
for lang in "${!to_rename[@]}"; do
if [ -d $podir/$lang ]; then
mv $podir/$lang $podir/${to_rename[$lang]}
fi
done
for lang in $(ls $podir); do
if [ -f $podir/$lang/kdeconnect-android-store-short.po -a -f $podir/$lang/kdeconnect-android-store-full.po ]; then
mkdir -p ./metadata/android/$lang/
cp ./metadata/android/en-US/title.txt ./metadata/android/$lang/title.txt # we do not translate the app name
po2txt --fuzzy --progress=names -i $podir/$lang/kdeconnect-android-store-short.po -o ./metadata/android/$lang/short_description.txt
po2txt --fuzzy --progress=names -i $podir/$lang/kdeconnect-android-store-full.po -o ./metadata/android/$lang/full_description.txt
fi
done
}

View File

@@ -0,0 +1,22 @@
KDE connect cihazlarınız arasında inteqrasiya üçün funksiyalar dəstini təqdim edir:
- Faylların cihazlar arasında köçürülməsi.
- Heç bir kabel qoşulmadan telefonunuzdakı fayllara compyuterinizdə baxmaq.
- Mübadilə yaddaşını paylaşmaq: cihazlarınız arasında kopyalama və yerləşdirmə.
- Daxil olan zəng və ismarıc bildirişlərini komputerdə göstərmək
- Virtual toxunma paneli: Telefonunuzun ektranını kompyuterin toxunma paneli kimi istifdə edin.
- Bildirişlərin eyniləşdirilməsi: Telefon bildirişlərini kompyuterinizdə göstərmək və ismarıclara cavab vermək.
- Multimedianın məsafədən idarə edilməsi: Linux media oxuducusunu telefonunuzdan idarə edin.
- WiFi bağlantısı: USB qoşulması və ya Bluetooth qoşulmasına ehtiyyac yoxdur.
- Ucdan-uca TLC şifrələmə: məlumatlarınızın təhlükəsizliyi qorunur.
Nəzərə alın ki, bu tətbiqin işləməsi üçün kompyuterinizə KDE Connect-i quraşdırmalısınız və sonuncu funksiyaların işləməsi üçün masaüstü və Android versiyalarını sonuncu versiyaya eyni şəkildə yeniləməlisiniz.
Həssas icazələr haqqında məlumat:
*Giriş imkanı icazələri: Əgər uzaqdan daxiletmə funksiyasından istifadə edirsinizsə Android cihazınızı idarə etmək üçün başqa cihazlardan daxil olanları qəbul etmək tələb olunur.
*Məkanın arxa fonda istifadəsinə icazə: Əgər etibarlı şəbəkə funksiyasından
istifadə edirsinizsə hansı WiFi şəbəkəsinə qoşulduğunuzu bilməniz tələb olunur
KDE Connect heç bir halda məlumatları KDE-yə və ya üçüncü tərəfə ötürmür. KDE Connect məlumatları bir cihazdan başqasına internet istifadə etmədən və ucdan-uca şifrələmədən istifadə edərək yerli şəbəkə üzərindən göndərir.
Bu tətbiq açıq qaynaq layihəsinin bir hissəsidir və ona töhvə verənlərin sayəsində mövcuddur. Mənbə kodunu əldə etmək üçün veb-səhifəyə daxil olun.

View File

@@ -0,0 +1 @@
KDE Connect kompyuteriniz ilə smartfonunuzu inteqrasiya edir

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect предоставя набор от функции за интегриране на вашия работен процес на различни устройства:
- Прехвърляйте файлове между вашите устройства.
- Осъществявайте достъп до файлове на телефона си от компютъра си, без кабели.
- Споделен клипборд: копирайте и поставяйте между вашите устройства.
- Получавайте известия за входящи обаждания и съобщения на вашия компютър.
- Виртуален тъчпад: Използвайте екрана на телефона си като тъчпад на компютъра.
- Синхронизиране на известия: Достъп до известията на телефона ви от вашия компютър и отговаряне на съобщения.
- Мултимедийно дистанционно управление: Използвайте телефона си като дистанционно за Linux медийни плейъри.
- WiFi връзка: не е необходим USB кабел или bluetooth.
- TLS криптиране от край до край: информацията ви е в безопасност.
Моля, имайте предвид, че ще трябва да инсталирате KDE Connect на вашия компютър, за да работи това приложение, и поддържайте версията за настолен компютър актуална с версията за Android, за да работят най-новите функции.
Поверителна информация за разрешения:
* Разрешение за достъпност: Изисква се за получаване на вход от друго устройство за управление на вашия телефон с Android, ако използвате функцията за отдалечено въвеждане.
* Разрешение за местоположение във фонов режим: Изисква се, за да знаете към коя WiFi мрежа сте свързани, ако използвате функцията Trusted Networks.
KDE Connect никога не изпраща никаква информация на KDE или на трета страна. KDE Connect изпраща данни от едно устройство на друго директно чрез локалната мрежа, никога през интернет, и чрез криптиране от край до край.
Това приложение е част от проект с отворен код и съществува благодарение на всички хора, които са допринесли за него. Посетете уебсайта, за да вземете изходния код.

View File

@@ -0,0 +1 @@
KDE Connect интегрира вашия смартфон и компютър

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
El KDE Connect proporciona un conjunt de característiques per a integrar el flux de treball entre dispositius:
- Transferiu fitxers entre els vostres dispositius.
- Accediu als fitxers del telèfon mòbil des de l'ordinador, sense cables.
- Porta-retalls compartit: copieu i enganxeu entre els dispositius.
- Obteniu les notificacions de trucades entrants i missatges a l'ordinador.
- Ratolí tàctil virtual: utilitzeu la pantalla del telèfon com a ratolí tàctil de l'ordinador.
- Sincronització de notificacions: accediu a les notificacions del telèfon des de l'ordinador i contesteu els missatges.
- Control remot multimèdia: utilitzeu el telèfon com a control remot dels reproductors multimèdia Linux.
- Connexió Wi-Fi: no cal connexió USB ni Bluetooth.
- Encriptatge TLS d'extrem a extrem: la informació és segura.
Tingueu en compte que haureu d'instal·lar el KDE Connect a l'ordinador perquè aquesta aplicació funcioni, i mantingueu actualitzada la versió d'escriptori amb la versió de l'Android perquè funcionin les últimes característiques.
Informació dels permisos confidencials:
* Permís d'accessibilitat: requerit per a rebre l'entrada des d'un altre dispositiu per a controlar el telèfon Android, si utilitzeu la característica d'entrada remota.
* Permís d'ubicació en segon pla: requerit per a saber a quina xarxa Wi-Fi esteu connectat, si utilitzeu la característica xarxes de confiança.
El KDE Connect mai envia cap informació a KDE ni a cap tercer. El KDE Connect envia dades des d'un dispositiu a l'altre directament utilitzant la xarxa local, mai a través d'Internet, i utilitzant l'encriptatge d'extrem a extrem.
Aquesta aplicació forma part d'un projecte de codi obert i existeix gràcies a totes les persones que hi han contribuït. Visiteu el lloc web per a aconseguir el codi font.

View File

@@ -0,0 +1 @@
El KDE Connect integra el vostre telèfon intel·ligent i l'ordinador

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect poskytuje sadu vlastností pro vzájemnou integraci vašich zařízení:
- Přenášejte soubory mezi zařízeními.
- Přistupujte bezdrátově k souborům na vašem počítači
- Sdílená schránka: kopírujte a vkládejte z jednoho zařízení na druhé.
- Přijímejte upozornění na příchozí hovory nebo SMS na vašem PC.
- Virtuální touchpad: Používejte obrazovku svého telefonu jako touchpad počítače.
- Synchronizace upozornění: Čtěte upozornění z vašeho telefonu na počítači.
- Vzdálené ovládání multimédií: Používejte svůj telefon jako ovladač přehrávače na Linuxu.
- Připojení WiFi: Není potřeba kabel USB ani Bluetooth.
- Koncové šifrování TLS: Vaše informace jsou v bezpečí.
Prosím pamatujte, že pro správnou funkci této aplikace je nutné abyste na vašem počítači měli nainstalován KDE Connect a udržovali jej aktuální na počítači i na Androidu.
Informace o citlivých oprávněních:
* Oprávnění přístupnosti: Nutné pro příjem vstupu z jiného zařízení aby mohlo ovládat váš telefon Android pokud používáte vlastnost Vzdálený vstup.
* Oprávnění o poloze na pozadí: Je potřebné pro rozpoznání, ke které síti WiFi jste připojeni, pokud používáte funkci Důvěryhodné sítě.
KDE Connect nikdy neposílá KDE ani nikomu jinému jakékoliv informace. KDE Connect odesílá data z jednoho zařízení druhému přímo přes místní síť, nikdy přes internet, a výhradně s použitím koncového šifrování.
Tato aplikace je součástí Open Source projektu a existuje jenom díky přispěvatelům. Zdrojové soubory naleznete na webových stránkách.

View File

@@ -0,0 +1 @@
KDE Connect integruje váš chytrý telefon a počítač

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect bietet eine Reihe von Funktionen, um Ihre Arbeitsabläufe über verschiedene Geräte zu vereinigen:
- Daten zwischen Ihren Geräten übertragen.
- Auf Daten auf Ihrem Telefon von Ihrem Computer aus zugreifen, ohne Kabel.
- Geteilte Zwischenablage: Kopieren und Einfügen zwischen Ihren Geräten.
- Erhalten Sie Benachrichtigungen über eingehende Anrufe und Nachrichten auf Ihren Computer.
- Virtuelles Touchpad: Verwenden Sie den Bildschirm Ihres Telefons als Touchpad für Ihren Computer.
- Abgleich der Benachrichtigungen: Greifen Sie über den Computer auf Ihre Telefonbenachrichtigungen zu und antworten Sie auf Nachrichten.
- Multimedia-Fernbedienung: Verwenden Sie Ihr Telefon als Fernbedienung für Linux-Medienspieler.
- WLAN-Verbindung: kein USB-Kabel oder Bluetooth erforderlich.
- Ende-zu-Ende-TLS-Verschlüsselung: Ihre Informationen sind sicher.
Bitte beachten Sie, dass Sie KDE Connect auf Ihrem Computer installieren müssen, damit diese App funktioniert und halten Sie die Desktop-Version mit der Android-Version auf dem aktuellen Stand, um die neuesten Funktionen nutzen zu können.
Informationen zu sensiblen Berechtigungen:
* Zugriffsberechtigung: Wird benötigt, um Eingaben zur Steuerung ihres Android-Telefons von einem anderen Gerät zu erhalten, wenn Sie die Ferneingabefunktion verwenden.
* Berechtigung den Standort im Hintergrund zu nutzen: Wird benötigt, um festzustellen, mit welchem WLAN-Netzwerk Sie verbunden sind, wenn Sie die Funktion „Vertrauenswürdige Netzwerke” verwenden.
KDE Connect sendet niemals irgendwelche Informationen an KDE oder an Dritte. KDE Connect sendet Daten, unter Verwendung einer Ende-zu-Ende-Verschlüsselung, über das lokale Netzwerk direkt von einem Gerät zum anderen, niemals über das Internet.
Diese App ist Teil eines Open-Scource-Projekts und besteht Dank all der Menschen die dazu beigetragen haben. Besuchen Sie die Internetseite, um sich den Quelltext zu holen.

View File

@@ -0,0 +1 @@
KDE Connect verbindet Ihr Smartphone mit Ihrem Computer

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,3 @@
1.25.0:
* Rewrite some of the internals to improve performance.
* Add search by name in the notification plugin settings.

View File

@@ -0,0 +1,6 @@
1.26.0:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,9 @@
1.26.1:
* Fix infinite loop that would cause high CPU usage.
1.26.0:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,12 @@
1.26.2:
* Fixed several bugs and crashes related to media controls.
1.26.1:
* Fix infinite loop that would cause high CPU usage.
1.26.0:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,12 @@
1.26.3:
* Fixed several bugs and crashes related to media controls.
1.26.1:
* Fix infinite loop that would cause high CPU usage.
1.26.0:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,12 @@
1.26.4:
* Fixed several bugs and crashes related to media controls.
1.26.1:
* Fix infinite loop that would cause high CPU usage.
1.26.0:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,9 @@
1.27:
* Added back the mouse receiver plugin.
1.26:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,12 @@
1.27.1:
* Fixed crashes.
1.27:
* Added back the mouse receiver plugin.
1.26:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,12 @@
1.28:
* Improved connection reliability.
1.27:
* Added back the mouse receiver plugin.
1.26:
* Allow having different widgets for diferent devices.
* Add stats about network packets sent and received.
* Add the option to cancel a pairing request after sending it.
* Fix device name set initially not being human-friendly.
* Rewrite some of the internals to improve performance.

View File

@@ -0,0 +1,7 @@
1.29
* Added MDNS device discovery
* Fixed crash opening the Run Command widget settings
* Added more fine-grained notification channels
* Added a confirmation before copying contacts
* Long-tapping the "Send clipboard" quick settings tile now opens the app
* Removed the photo plugin

View File

@@ -0,0 +1,13 @@
1.30
* Added Bluetooth support (beta)
* Improved device controls
* Added scroll sensitivity option to remote input
* Accessibility improvements
1.29
* Added MDNS device discovery
* Fixed crash opening the Run Command widget settings
* Added more fine-grained notification channels
* Added a confirmation before copying contacts
* Long-tapping the "Send clipboard" quick settings tile now opens the app
* Removed the photo plugin

View File

@@ -0,0 +1,16 @@
1.30.1
* Fixes recently introduced crashes
1.30
* Added Bluetooth support (beta)
* Improved device controls
* Added scroll sensitivity option to remote input
* Accessibility improvements
1.29
* Added MDNS device discovery
* Fixed crash opening the Run Command widget settings
* Added more fine-grained notification channels
* Added a confirmation before copying contacts
* Long-tapping the "Send clipboard" quick settings tile now opens the app
* Removed the photo plugin

View File

@@ -0,0 +1,11 @@
1.31
* Allow sharing URLs to disconnected devices, to be opened when they become available later
* Show a notification to continue playing media on this device after stopping it on another device
* Display a shortened version of the pairing verification key
* Tweaks to the app theme
1.30
* Added Bluetooth support (beta)
* Improved device controls
* Added scroll sensitivity option to remote input
* Accessibility improvements

View File

@@ -0,0 +1,10 @@
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC
1.31
* Allow sharing URLs to disconnected devices, to be opened when they become available later
* Show a notification to continue playing media on this device after stopping it on another device
* Display a shortened version of the pairing verification key
* Tweaks to the app theme

View File

@@ -0,0 +1,13 @@
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC
1.31
* Allow sharing URLs to disconnected devices, to be opened when they become available later
* Show a notification to continue playing media on this device after stopping it on another device
* Display a shortened version of the pairing verification key
* Tweaks to the app theme

View File

@@ -0,0 +1,11 @@
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC

View File

@@ -0,0 +1,14 @@
1.32.3
* Fix trusted devices list
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC

View File

@@ -0,0 +1,17 @@
1.32.5
* Fixed crash in Android 14+
1.32.3
* Fix trusted devices list
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC

View File

@@ -0,0 +1,16 @@
1.32.7
* Fixed file transfers showing as failed when they succeeded
* Fixed plugin list not updating after granting permissions
1.32.5
* Fixed crash in Android 14+
1.32.3
* Fix trusted devices list
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote

View File

@@ -0,0 +1,21 @@
KDE Connect provides a set of features to integrate your workflow across devices:
- Transfer files between your devices.
- Access files on your phone from your computer, without wires.
- Shared clipboard: copy and paste between your devices.
- Get notifications for incoming calls and messages on your computer.
- Virtual touchpad: Use your phone screen as your computer's touchpad.
- Notifications sync: Access your phone notifications from your computer and reply to messages.
- Multimedia remote control: Use your phone as a remote for Linux media players.
- WiFi connection: no USB wire or bluetooth needed.
- End-to-end TLS encryption: your information is safe.
Please note you will need to install KDE Connect on your computer for this app to work, and keep the desktop version up-to-date with the Android version for the latest features to work.
Sensitive permissions information:
* Accessibility permission: Required to receive input from another device to control your Android phone, if you use the Remote Input feature.
* Background location permission: Required to know to which WiFi network you are connected to, if you use the Trusted Networks feature.
KDE Connect never sends any information to KDE nor to any third party. KDE Connect sends data from one device to the other directly using the local network, never through the internet, and using end to end encryption.
This app is part of an open source project and it exists thanks to all the people who contributed to it. Visit the website to grab the source code.

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

View File

@@ -0,0 +1 @@
KDE Connect integrates your smartphone and computer

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect provides a set of features to integrate your workflow across devices:
- Transfer files between your devices.
- Access files on your phone from your computer, without wires.
- Shared clipboard: copy and paste between your devices.
- Get notifications for incoming calls and messages on your computer.
- Virtual touchpad: Use your phone screen as your computer's touchpad.
- Notifications sync: Access your phone notifications from your computer and reply to messages.
- Multimedia remote control: Use your phone as a remote for Linux media players.
- WiFi connection: no USB wire or bluetooth needed.
- End-to-end TLS encryption: your information is safe.
Please note you will need to install KDE Connect on your computer for this app to work, and keep the desktop version up-to-date with the Android version for the latest features to work.
Sensitive permissions information:
* Accessibility permission: Required to receive input from another device to control your Android phone, if you use the Remote Input feature.
* Background location permission: Required to know to which WiFi network you are connected to, if you use the Trusted Networks feature.
KDE Connect never sends any information to KDE nor to any third party. KDE Connect sends data from one device to the other directly using the local network, never through the internet, and using end to end encryption.
This app is part of an open source project and it exists thanks to all the people who contributed to it. Visit the website to grab the source code.

View File

@@ -0,0 +1 @@
KDE Connect integrates your smartphone and computer

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect proporciona una serie de funcionalidades para integrar tus flujos de trabajo entre distintos dispositivos:
- Transferir archivos entre dispositivos.
- Acceder a archivos en tu teléfono desde tu equipo, sin cables.
- Portapapeles compartido: copia y pega entre tus dispositivos.
- Recibe notificaciones de llamadas entrantes y mensajes en tu equipo.
- Panel táctil virtual: Usa la pantalla de tu teléfono como panel táctil de tu equipo.
- Sincronización de notificaciones: Accede a las notificaciones de tu teléfono desde tu equipo y responde mensajes .
- Control remoto multimedia: Usa tu teléfono como mando a distancia de tus reproductores multimedia Linux.
- Conexión WiFi: no se necesitan cables USB o Bluetooth.
- Cifrado TLS extremo a extremo: tu información está a salvo.
Ten en cuenta que necesitas tener instalado KDE en tu equipo para que esta aplicación funcione, y mantener la versión de escritorio actualizada con la versión de Android para tener acceso a las nuevas funcionalidades.
Información de permisos:
* Permisos de acceso: Necesarios para recibir entradas desde otro dispositivo para controlar su dispositivo Android, si usa la funcionalidad de entrada remota.
* Permisos de localización en segundo plano: Necesarios para saber a que red WiFi está conectado, si usa la funcionalidad de redes confiables.
KDE Connect nunca envía ninguna información a KDE o a terceros. KDE Connect envía datos de un dispositivo a otro usando directamente la red local, nunca a través de internet, y usando cifrado extremo a extremo.
Esta aplicación es parte de un proyecto de código abierto y existe gracias a toda gente que ha contribuido a ella. Visita la página web para acceder al código fuente.

View File

@@ -0,0 +1 @@
KDE Connect integra tu teléfono inteligente y tu equipo

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
«KDE Connect»ek zure lan-fluxua gailuen artean bateratzeko ezaugarri multzo bat eskaintzen du:
- Zure gailuen arteko fitxategi transferentziak.
- Atzitu zure telefonoko fitxategiak zure ordenagailutik, haririk gabe.
- Arbela partekatua: Gailu batetik bestera kopiatu eta itsatsi.
- Jaso zure ordenagailuan sarrerako deien eta mezuen jakinarazpenak.
- Alegiazko ukimen-sagua: Erabili zure telefonoaren pantaila zure ordenagailuaren ukimen-sagu gisa.
- Jakinarazpenak sinkronizatzea: Atzitu zure telefonoko jakinarazpenak zure ordenagailutik eta erantzun mezuei.
- Multimediaren urrutiko agintea: Erabili zure telefonoa Linuxeko euskarri jotzaileen urrutiko aginte gisa.
- Wi-Fi konexioa: Ez da USB kablerik edo bluetooth-ik behar.
- Muturren arteko TLS zifratzea: Zure informazioa seguru dago.
Kontuan izan, aplikazio hau ibil dadin KDE Connect zure ordenagailuan instalatu beharko duzula, eta mahaigaineko bertsioa Androideko bertsioarekin eguneratuta mantendu beharko duzula ezaugarri berrienak ibil daitezen.
Babes bereziko baimenei buruzko informazioa:
* Irisgarritasun baimena: Beharrezkoa zure Android telefonoa kontrolatzeko beste gailu baten sarrera jasotzeko, urrutiko sarrera ezaugarria erabiltzen baduzu.
* Atzeko planoko kokapen baimena: Beharrezkoa zein Wi-Fi sarera konektatuta zauden jakiteko, Konfiantzazko sareen ezaugarria erabiltzen baduzu.
«KDE Connect»ek ez dio sekula KDEri edo beste inori informaziorik bidaltzen. «KDE Connect»ek datuak gailu batetik beste batera zuzenean bidaltzen ditu sare lokala erabiliz, sekula ez Internet bidez, eta betiere muturren artean zifratuta.
Aplikazio hau sorburu irekiko proiektu baten zati da, eta horretan lagundu duten lagun guztiei esker existitzen da. Bisitatu webgunea sorburu-kodea hartzeko.

View File

@@ -0,0 +1 @@
«KDE Connect»ek zure telefono adimenduna eta ordenagailua bateratzen ditu

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,22 @@
KDE Connect tarjoaa joukon ominaisuuksia työvuon eheyttämiseksi laitteiden välillä:
Tiedostojen siirto laitteesta toiseen.
Pääsy puhelimen tiedostoihin tietokoneelta kaapeleitta.
Jaettu leikepöytä: kopioi ja liitä laitteelta toiselle.
Ilmoitukset saapuvista puheluista ja tekstiviesteistä tietokoneellesi.
Jaa tiedostoja ja verkko-osoitteita tietokoneeseesi mistä sovelluksesta vain.
Näyttönäppäimistö: käytä puhelimen näyttöä tietokoneesi osoitinlaitteena.
Ilmoitusten tahdistus: lue Android-ilmoitukset ja vastaa viesteihin työpöydältä.
Multimedian etähallinta: käytä puhelinta Linux-mediasoitinten kaukosäätimenä.
Langaton verkkoyhteys: USB-johtoa tai Bluetoothia ei tarvita.
TLS-salaus päästä päähän: tietosi ovat turvassa.
Huomaa, että jotta sovellus kaikkine ominaisuuksineen toimisi, KDE Connect tulee asentaa tietokoneeseen ja pitää ajan tasalla Android-version kanssa.
Tietoa arkaluontoisista käyttöoikeuksista:
Saavutettavuuskäyttöoikeus: vaaditaan, jotta toisen laitteen syötteellä voisi hallita Android-puhelinta (jos käytetään etäsyöttöominaisuutta).
Sijaintitiedon käyttöoikeus taustalla: vaaditaan, jotta tiedetään, mihin verkkoon on yhdistetty (jos käytetään luotettujen verkkojen ominaisuutta).
KDE Connect ei koskaan lähetä tietoa KDE:lle tai kolmansille osapuolille. Tieto lähetetään suoraan laitteesta toiseen paikallisverkossa, ei koskaan internetissä, ja käytössä on salaus päästä päähän.
Sovellus on avoimen lähdekoodin projekti ja on olemassa sitä avustaneiden ihmisten ansiosta. Lähdekoodin saat noudettua kotisivulta.

View File

@@ -0,0 +1 @@
KDE Connect eheyttää älypuhelimen ja tietokoneen

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDEConnect fournit un ensemble de fonctionnalités pour intégrer votre flux de travail entre périphériques :
- Transfert des fichiers entre vos périphériques.
- Accès aux fichiers sur votre téléphone depuis votre ordinateur, sans fil.
- Presse-papier partagé : copier et coller entre vos périphériques.
- Apparition de notifications pour les appels et les messages entrants sur votre ordinateur.
- Pavé tactile virtuel : utilisation de l'écran de votre téléphone comme pavé tactile pour votre ordinateur.
- Synchronisation de vos notifications : accès à vos notifications téléphoniques depuis votre ordinateur et réponses aux messages.
- Télé-commande multimédia : utilisation de votre téléphone comme télécommande pour les lecteurs de média sous Linux.
- Connexion au Wifi : aucun connexion USB ou Bluetooth nécessaire.
- Chiffrement « TLS » de bout en bout : vos informations sont en sécurité.
Veuillez noter que vous devrez installer KDEConnect sur votre ordinateur pour que cette application fonctionne et maintenir la version de bureau à jour avec la version Android pour les dernières fonctionnalités.
Informations sur les permissions sensibles :
* Permission d'accessibilité : nécessaire pour recevoir les informations d'un autre périphérique pour contrôler votre téléphone Android, si vous utilisez la fonction de télécommande.
* Permission pour emplacement en arrière-plan : nécessaire pour savoir à quel réseau Wifi auquel vous êtes connecté, si vous utilisez la fonctionnalité de réseaux de confiance.
KDEConnect n'envoie jamais d'informations à KDE ni à aucun tiers. KDEConnect envoie des données d'un périphérique à un autre à l'aide du réseau local, mais jamais par Internet et en utilisant le chiffrement de bout en bout.
Cette application fait partie d'un projet « Open source ». Il existe grâce à toutes les personnes qui y ont contribué. Veuillez visiter le site Internet pour accéder au code source.

View File

@@ -0,0 +1 @@
KDEConnect intègre votre téléphone et votre ordinateur.

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,22 @@
KDE Connect fornece funcionalidades para facilitar traballar con varios dispositivos:
• Transferir ficheiros entre dispositivos.
• Acceder a ficheiros do teléfono desde o computador, sen cables.
• Portapapeis compartido: copie e pegue entre dispositivos.
• Obter notificacións de chamadas e mensaxes no computador.
• Panel táctil virtual: use a pantalla do teléfono como panel táctil do computador.
• Sincronización de notificacións: lea as notificacións do teléfono desde o computador e responda a mensaxes.
• Mando a distancia multimedia: use o teléfono como mando a distancia para reprodutores multimedia de Linux.
• Conexión WiFi: non necesita cable USB nin Bluetooth.
• Cifrado TLS de extremo a extremo: a súa información está segura.
Para que esta aplicación funcione ten que instalar KDE Connect no computador, e manter a versión do computador e de Android actualizadas para que funcionen as últimas funcionalidades.
Permisos de información persoal:
• Permiso de accesibilidade: necesario para recibir entrada doutro dispositivo para controlar o teléfono Android, se usa a funcionalidade de entrada remota.
• Permiso de localización en segundo plano: necesario para saber con que rede WiFi ten conexión, se usa a funcionalidade de redes de confianza.
KDE Connect nunca envía información a KDE nin a terceiras partes. KDE Connect envía os datos dun dispositivo a outro directamente pola rede local, nunca a través de Internet, e usando cifraxe de extremo a extremo.
Esta aplicación é parte dun proxecto de software libre e existe grazas á xente que colaborou no proxecto. Visite o sitio web para obter o código fonte.

View File

@@ -0,0 +1 @@
KDE Connect integra teléfono e computador.

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,22 @@
KDE Connect fornisce una serie di funzionalità per integrare il tuo flusso di lavoro su tutti i dispositivi:
- Trasferisci file tra i tuoi dispositivi.
- Accedi ai file sul tuo telefono dal tuo computer, senza cavi.
- Appunti condivisi: copia e incolla tra i tuoi dispositivi.
- Condividi file e URL sul tuo computer da qualsiasi applicazione.
- Ricevi notifiche per chiamate in arrivo e messaggi SMS sul tuo computer.
- Touchpad virtuale: utilizza lo schermo del telefono come touchpad del computer.
- Sincronizzazione delle notifiche: leggi le notifiche Android dal desktop.
- Telecomando multimediale: usa il tuo telefono come telecomando per i lettori multimediali per Linux.
- Connessione WiFi: non necessita di alcun cavo USB o bluetooth.
- Cifratura TLS end-to-end: le tue informazioni sono al sicuro.
Tieni presente che dovrai installare KDE Connect sul tuo computer affinché questa applicazione funzioni e mantenere la versione desktop aggiornata con la versione Android affinché funzionino le funzionalità più recenti.
Informazioni sensibili sui permessi:
* Permesso di accessibilità: necessario per ricevere input da un altro dispositivo per controllare il tuo telefono Android, se utilizzi la funzione di immissione remota.
* Permesso alla posizione in background: necessario per sapere a quale rete WiFi sei collegato, se utilizzi la funzionalità Reti affidabili.
KDE Connect non invia mai alcuna informazione a KDE né a terze parti. KDE Connect invia i dati da un dispositivo all'altro direttamente utilizzando la rete locale, mai attraverso Internet, e utilizzando la cifratura end-to-end.
Questa applicazione fa parte di un progetto open source ed esiste grazie a tutte le persone che vi hanno contribuito. Visita il sito web per ottenere il codice sorgente.

View File

@@ -0,0 +1 @@
KDE Connect integra il tuo smartphone e computer

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
היישומון KDE Connect מספק מכוון יכולות לשילוב רצף העבודה שלך בין כמה מכשירים:
- העברת קבצים בין המכשירים שלך.
- גישה לקבצים בטלפון שלך מהמחשב, ללא כבלים.
- לוח גזירים משותף: העתקה והדבקה בין המכשירים שלך.
- קבלת התראות על שיחות והודעות נכנסות במחשב שלך.
- משטח מגע וירטואלי: אפשר להשתמש במסך הטלפון שלך כמשטח מגע למחשב.
- סנכרון התראות: גישה להתראות של הטלפון שלך מהמחשב לרבות מענה על הודעות.
- שליטה מרחוק במולטימדיה: אפשר להשתמש בטלפון שלך כשלט לנגני מדיה בלינוקס.
- חיבור רשת אלחוטית: לא צריך כבל USB או בלוטות׳.
- הצפנת TLS מקצה לקצה: המידע שלך מאובטח.
נא לשים לב שצריך להתקין את KDE Connect גם במחשב שלך כדי שהיישומון הזה יעבוד ולדאוג שהגרסה שבשולחן העבודה תהיה עדכנית בהתאם לגרסת היישומון ב־Android כדי שהיכולות העדכניות ביותר תעבודנה.
מידע על הרשאות רגישות:
* הרשאות נגישות: נחוצות כדי לקבל קלט ממכשיר אחר לשליטה בטלפון ה־Android שלך, אם בחרת להשתמש ביכולת השליטה מרחוק.
* הרשאת איתור מקום ברקע: נדרשת כדי לדעת לאיזו רשת אלחוטית התחברת אם בחרת להשתמש ביכולת הרשתות המהימנות.
יישומון KDE Connect אף פעם לא שולח מידע ל־KDE או לגוף שלישי כלשהו. היישומון שולחן נתונםי ממכשיר אחד ישירות למכשיר השני דרך הרשת המקומית, אף פעם לא דרך האינטרנט והוא משתמש בהצפנה מקצה לקצה.
יישומון זה הוא חלק ממיזם קוד פתוח והוא קיים בזכות כל אלו שתרמו לו. מזמינים אותך לבקר באתר כדי למשוך את קוד המקור.

View File

@@ -0,0 +1 @@
KDE Connect מגשר בין הטלפון החכם והמחשב שלך

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,20 @@
KDE Connect は携帯電話と PC を連携させてあなたのワークフローを円滑にします:
・クリップボードの共有: デバイス間でコピー・ペーストできます。
・ファイルや URL をあらゆるアプリからコンピュータに送信できます。
・電話や SMS の通知を PC 上に表示できます。
・仮想タッチパッド: 携帯電話の画面をタッチパッドのように使用できます。
・通知の同期: Android の通知をデスクトップに表示できます。
・マルチメディアリモコン: 携帯電話を PC 上のメディアプレーヤーのリモコンとして使用できます。
・WiFi 接続: USB ケーブルや Bluetooth は必要ありません。
・エンドツーエンド TLS 暗号化: あなたの情報は保護されます。
このアプリを動作させるには、お使いのコンピュータにも KDE Connect をインストールする必要があることに注意してください。最新の機能を使用するために、いずれの機器の KDE Connect も最新バージョンに更新してください。
センシティブな権限に関する情報:
*アクセシビリティ: リモート入力機能を使用する場合、他のデバイスから入力を受信して Android 端末を操作するために要求されます。
*バックグラウンドでの位置情報: 「信頼されたネットワーク」機能を使用する場合、どの WiFi ネットワークに接続されているか検知するために要求されます。
KDE Connect は KDE や第三者にいかなる情報も送信しません。このアプリは、ローカルネットワークを通じてエンドツーエンドで暗号化されたデータを送受信します。インターネットは全く使用されません。
このアプリはオープンソースプロジェクトであり、多くの人々の貢献のもとに成り立っています。ソースコードを取得するには、私たちのウェブサイトを訪れてください。

View File

@@ -0,0 +1 @@
KDE Connect は携帯電話と PC を連携させます

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect უზრუნველყოფს კომპლექტი თვისებები ინტეგრირება თქვენი workflow მასშტაბით მოწყობილობები:
- ფაილების გადატანა თქვენს მოწყობილობებს შორის.
- თქვენი ტელეფონის ფაილებზე წვდომა თქვენი კომპიუტერიდან, მავთულის გარეშე.
- გაზიარებული ბუფერი: დააკოპირეთ და ჩასვით თქვენს მოწყობილობებს შორის.
- მიიღეთ შეტყობინებები თქვენს კომპიუტერში შემომავალი ზარებისა და შეტყობინებების შესახებ.
- ვირტუალური სენსორული პანელი: გამოიყენეთ თქვენი ტელეფონის ეკრანი, როგორც თქვენი კომპიუტერის სენსორული პანელი.
- შეტყობინებების სინქრონიზაცია: შედით თქვენი ტელეფონის შეტყობინებებზე თქვენი კომპიუტერიდან და უპასუხეთ შეტყობინებებს.
- მულტიმედიური დისტანციური მართვა: გამოიყენეთ თქვენი ტელეფონი, როგორც დისტანციური linux მედია ფლეერებისთვის.
- WiFi კავშირი: არ არის საჭირო USB მავთული ან bluetooth.
- ბოლომდე tls დაშიფვრა: თქვენი ინფორმაცია უსაფრთხოა.
გთხოვთ გაითვალისწინოთ, რომ თქვენ უნდა დააინსტალიროთ KDE Connect თქვენს კომპიუტერში ამ აპის მუშაობისთვის და შეინარჩუნოთ დესკტოპის ვერსია Android ვერსიასთან ერთად უახლესი ფუნქციების მუშაობისთვის.
მგრძნობიარე ნებართვების ინფორმაცია:
* ხელმისაწვდომობის ნებართვა: საჭიროა სხვა მოწყობილობიდან შეყვანის მიღება თქვენი Android ტელეფონის გასაკონტროლებლად, თუ იყენებთ დისტანციური შეყვანის ფუნქციას.
* ფონის მდებარეობის ნებართვა: საჭიროა იცოდეთ რომელ WiFi ქსელთან ხართ დაკავშირებული, თუ იყენებთ სანდო ქსელების ფუნქციას.
KDE Connect არასდროს უგზავნის ინფორმაციას KDE-ს და არც მესამე მხარეს. KDE Connect აგზავნის მონაცემებს ერთი მოწყობილობიდან მეორეზე პირდაპირ ადგილობრივი ქსელის გამოყენებით, არასდროს ინტერნეტის საშუალებით და იყენებს ბოლოდან ბოლოში დაშიფვრას.
ეს აპლიკაცია ღია კოდის პროექტის ნაწილია და ის არსებობს ყველა იმ ადამიანის წყალობით, ვინც მას წვლილი შეიტანა. ეწვიეთ ვებსაიტს, რომ აიღოთ კოდის კოდი.

View File

@@ -0,0 +1 @@
KDE Connect თქვენი ტელეფონისა და კომპიუტერის ინტეგრაციას ახდენს

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect를 사용하여 여러 장치에서 작업을 이어서 진행할 수 있습니다.
- 장치간 파일을 전송할 수 있습니다.
- 케이블 연결 없이 컴퓨터에서 휴대폰에 있는 파일에 접근할 수 있습니다.
- 공유 클립보드: 장치간 복사와 붙여넣기를 지원합니다.
- 컴퓨터에서 수신 전화나 SMS 알림을 받을 수 있습니다.
- 가상 터치패드: 휴대폰 화면을 컴퓨터 터치패드로 사용할 수 있습니다.
- 알림 동기화: 휴대폰 알림을 데스크톱에서 확인하고 메시지에 답장할 수 있습니다.
- 멀티미디어 리모콘: 리눅스 미디어 재생기의 리모콘으로 사용할 수 있습니다.
- Wi-Fi 연결: 유선 USB나 블루투스 연결이 필요하지 않습니다.
- 종단간 TLS 암호화: 정보를 안전하게 유지합니다.
이 앱을 사용하려면 KDE Connect를 컴퓨터에도 설치하고, 최신 기능을 사용하려면 데스크톱 버전을 안드로이드 버전에 따라서 업데이트해야 합니다.
권한 정보:
* 접근성 권한: 원격 입력 기능을 사용할 때 다른 장치에서 입력을 받아서 안드로이드 장치를 제어할 때 필요합니다.
* 백그라운드 위치 권한: 신뢰하는 네트워크 기능을 사용할 때 현재 연결된 Wi-Fi 네트워크 정보를 얻으려면 필요합니다.
KDE Connect는 KDE나 제3자에게 정보를 전송하지 않습니다. KDE Connect는 인터넷을 통하지 않고 로컬 네트워크 내에서 장치간 정보를 직접 전송하며, 종단간 암호화를 사용합니다.
이 앱은 오픈 소스 프로젝트의 일부입니다. 웹사이트를 방문하여 소스 코드를 확인할 수 있습니다.

View File

@@ -0,0 +1 @@
KDE Connect는 스마트폰과 컴퓨터를 통합합니다

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect biedt een set mogelijkheden om uw werkmethode te integreren tussen apparaten:
- Stuur bestanden over tussen apparaten.
- heb toegang tot bestanden op uw telefoon vanaf uw computer, zonder draden.
- Gedeeld klembord: kopiëren en plakken tussen uw apparaten.
- Meldingen krijgen over inkomende oproepen en berichten op uw computer.
- Virtueel touchpad: uw telefoonscherm gebruiken als het touchpad van uw computer.
- Meldingen synchroniseren: lees uw Android meldingen vanaf uw computer en antwoord op berichten.
- Afstandsbediening van multimedia: uw telefoon als een afstandsbediening gebruiken voor Linux mediaspelers.
- WiFi verbinding: geen USB draad of bluetooth nodig.
- End-to-end TLS versleuteling: uw informatie is veilig.
Merk op dat u KDE Connect op uw computer moet installeren om deze toepassing te laten werken en houd de bureaubladversie up-to-date met de Android versie om de laatste mogelijkheden te laten werken.
Informatie over gevoelige rechten:
* Rechten voor toegang: vereist om invoer van een ander apparaat te ontvangen voor het besturen van uw Android telefoon, als u mogelijkheid invoer van afstand gebruikt.
* Rechten voor achtergrondlocatie: vereist om te weten met welk WiFi-network u bent verbonden, als u de mogelijkheid vertrouwde netwerken gebruikt.
KDE Connect verzendt nooit enige informatie naar KDE of naar een derde. KDE Connect verzendt gegevens van het ene apparaat direct naar het andere met gebruik van het lokale netwerk, nooit via het internet en gebruikt end-to-end versleuteling.
Deze toepassing is onderdeel van een open-source project en het bestaat dankzij alle mensen die er aan hebben bijgedragen. Bezoek de website om de broncode te verkrijgen.

View File

@@ -0,0 +1 @@
KDE Connect integreert uw smartphone en computer

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect tilbyr eit sett funksjonar som lèt deg enkelt arbeida på tvers av einingar:
Overfør filer mellom einingane
Få trådlaus tilgang til filer på telefonen frå datamaskina
Del utklippsbilete: kopier og lim inn mellom einingane
Vert varsla på datamaskina om innkommande samtalar og tekstmeldingar
Virtuell styreplate: bruk telefon­skjermen som styreplate for datamaskina
Synkronisering av varslingar: få tilgang til telefon­varslingar frå datamaskina og svar på meldingar
Fjernkontroll av medieavspeling: bruk telefonen til å styra Linux-baserte mediespelarar
Wi-Fi-tilkopling: du treng ikkje USB- eller Bluetooth-tilkopling
Ende-til-ende-kryptering: informasjonen din er trygg
Merk at du må installera KDE Connect på datamaskina for å kunna bruka appen. Hugs å halda PC-versjonen oppdatert med Android-versjonen for tilgang til dei nyaste funksjonane.
Informasjon om sensitive løyve:
Tilgjenge-løyve: Trengst for å kunna ta imot tastetrykk frå PC for å styra Android-eininga om du brukar funksjonen «Fjernstyring»
Bakgrunns­løyve til å sjå geografiske posisjon: Trengst for å veta kva Wi-Fi-nettverk du er tilkopla om du brukar funksjonen «Tiltrudde nettverk»
KDE Connect sender aldri informasjon til KDE eller nokon tredjepart. Programmet sender data direkte mellom dei to einingane via lokalnettet, aldri via Internett og alltid med ende-til-ende-kryptering.
Appen er ein del av eit fri programvare-prosjekt og er blitt til takka vera mange bidragsytarar. Gå til heimesida for å sjå kjeldekoden.

View File

@@ -0,0 +1 @@
KDE Connect koplar telefonen din saman med datamaskina

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
KDE Connect daje kila możliwości umożliwiających uwspólnienie ciągów pracy na przestrzeni urządzeń:
- Przenoszenie plików pomiędzy twoimi urządzeniami.
- Dostęp do plików na twoim telefonie z twojego komputera bez kabli.
- Współdzielony schowek: kopiuj i wklejaj pomiędzy swoimi urządzeniami.
- Odbieraj powiadomienia o przychodzących rozmowach i wiadomościach na swoim komputerze.
- Klawiatura wirtualna: Używaj ekranu swojego telefonu jako gładzika swojego komputera.
- Synchronizacja powiadomień: Uzyskuj dostęp do powiadomień na swoim telefonie ze zwojego komputera i odpowiadaj na wiadomości.
- Pilot do multimediów: Używaj swojego telefonu jako pilota do odtwarzaczy multimedialnych na Linuksie.
- Połączenie WiFi: nie jest potrzebny żaden kabel USB czy bluetooth.
- Szyfrowanie TLS koniec-do-końca: twoje dane są bezpieczne.
Pamiętaj, że musisz wgrać KDE Connect na swój komputer, aby ta aplikacja zadziałała i utrzymywać jej wersję zgodnie z wersją na Androidzie, aby móc korzystać z jej najnowszych możliwości.
Powiadomienie o wrażliwych uprawnieniach:
* Uprawnienia dostępności: Wymagane, aby inne urządzenie mogło obsługiwać twój telefon z Androidem, jeśli chcesz skorzystać z możliwości Zdalnej Obsługi.
* Uprawnienia do położenia w tle: Wymagane, aby wiedzieć do jakiej sieci WiFi jesteś podłączony, jeśli używasz możliwości Zaufanych Sieci.
KDE Connect nigdy nie wysyła żadnych danych do KDE, ani w żadne inne miejsce. KDE Connect wysyła dane z jednego urządzenia na inne bezpośrednio przy użyciu miejscowej sieci, nigdy przez internet i przy wykorzystaniu szyfrowania koniec-do-końca.
Ta aplikacja jest częścią projektu o otwartym kodzie i istnieje dzięki wszystkim ludziom, którzy dołożyli do niej swoją cegiełkę. Odwiedź stronę sieciową, aby pobrać jej kod źródłowy.

View File

@@ -0,0 +1 @@
KDE Connect łączy twojego smartfona z twoim komputerem

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,11 @@
O KDE Connect oferece um conjunto de funcionalidades para integrar os seus procedimentos com os dispositivos:
- Área de transferência partilhada: copiar e colar entre os seus dispositivos.
- Partilhar ficheiros e URL's para o seu computador a partir de qualquer aplicação.
- Obter notificações para as chamadas e mensagens SMS recebidas no seu PC.
- Rato por toque virtual: Use o ecrã do seu telefone como o rato do seu computador.
- Sincronização das notificações: Leia as notificações do seu Android no ambiente de trabalho.
- Comando à distância multimédia: Use o seu telefone como um comando para leitores multimédia do Linux.
- Ligação WiFi: sem necessitar de um cabo USB ou de Bluetooth.
- Encriptação TLS ponto-a-ponto: a sua informação está segura.
Lembre-se que terá de instalar o KDE Connect no seu computador para esta aplicação funcionar, e manter a versão no computador actualizada com a versão do Android para as últimas funcionalidades resultarem.
Esta aplicação faz parte de um projecto de código aberto e existe graças a todas as pessoas que contribuíram para elas. Visite a página Web para capturar o código-fonte.

View File

@@ -0,0 +1 @@
O KDE Connect integra o seu telemóvel com o computador

View File

@@ -0,0 +1 @@
KDE Connect

View File

@@ -0,0 +1,21 @@
O KDE Connect fornece um conjunto de recursos para integrar seu fluxo de trabalho entre dispositivos:
- Transfira arquivos entre seus dispositivos.
- Acesse arquivos do seu computador no seu telefone, sem fios.
- Área de transferência compartilhada: copie e cole entre seus dispositivos.
- Receba notificações de chamadas recebidas e mensagens SMS no seu PC.
- Touchpad virtual: use a tela do telefone como touchpad do computador.
- Sincronização de notificações: acesse as notificações do seu telefone no seu computador e responda as mensagens.
- Controle remoto multimídia: use seu telefone como controle remoto para reprodutores de mídia no Linux.
- Conexão Wi-Fi: sem necessidade de cabos USB ou bluetooth.
- Criptografia TLS de ponta a ponta: suas informações estão seguras.
Observe que você precisará instalar o KDE Connect no seu computador para que este aplicativo funcione e mantenha a versão para desktop atualizada com a versão do Android para que os recursos mais recentes funcionem.
Informações sobre permissões sensíveis:
* Permissão de acessibilidade: necessária para receber entrada de outro dispositivo para controlar seu telefone Android, se você usar o recurso de entrada remota.
* Permissão de localização em segundo plano: necessária para saber a qual rede Wi-Fi você está conectado, se você usar o recurso de redes confiáveis.
O KDE Connect nunca envia nenhuma informação ao KDE ou a terceiros. O KDE Connect envia dados de um dispositivo para outro diretamente usando a rede local, nunca pela Internet e usando criptografia de ponta a ponta.
Este aplicativo faz parte de um projeto de código aberto e existe graças a todas as pessoas que contribuíram para ele. Visite o site para obter o código-fonte.

Some files were not shown because too many files have changed in this diff Show More