2013-06-06 05:57:06 +02:00
<?xml version="1.0" encoding="utf-8"?>
2023-06-05 12:21:15 +02:00
<!--
SPDX-FileCopyrightText: 2023 Albert Vaca Cintora <albertvaka @ g m a i l . c o m >
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
2013-06-06 05:57:06 +02:00
<manifest xmlns:android= "http://schemas.android.com/apk/res/android"
2024-12-31 09:24:17 +01:00
xmlns:tools="http://schemas.android.com/tools">
2013-06-06 05:57:06 +02:00
2018-03-03 15:25:08 +01:00
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
2024-03-30 21:48:28 -04:00
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />
2024-10-13 23:14:33 +02:00
<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" />
2013-09-10 11:56:36 +02:00
2013-08-08 04:26:06 +02:00
<uses-permission android:name= "android.permission.RECEIVE_BOOT_COMPLETED" />
2013-10-05 17:26:28 +02:00
<uses-permission android:name= "android.permission.INTERNET" />
2023-10-26 18:14:59 +01:00
<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" />
2013-10-05 17:26:28 +02:00
<uses-permission android:name= "android.permission.ACCESS_NETWORK_STATE" />
2020-07-05 13:32:44 +05:30
<uses-permission android:name= "android.permission.CHANGE_NETWORK_STATE" />
2023-08-21 11:46:00 +02:00
<uses-permission android:name= "android.permission.ACCESS_WIFI_STATE" />
2020-07-05 13:32:44 +05:30
<uses-permission android:name= "android.permission.CHANGE_WIFI_STATE" />
2013-10-05 17:26:28 +02:00
<uses-permission android:name= "android.permission.CHANGE_WIFI_MULTICAST_STATE" />
2018-04-08 17:20:41 +02:00
<uses-permission android:name= "android.permission.READ_PHONE_STATE" />
2013-08-08 04:26:06 +02:00
<uses-permission android:name= "android.permission.READ_CONTACTS" />
2013-11-23 01:48:46 +01:00
<uses-permission android:name= "android.permission.READ_EXTERNAL_STORAGE" />
2018-07-27 07:55:30 +02:00
<uses-permission android:name= "android.permission.VIBRATE" />
2015-08-20 00:59:21 -07:00
<uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" />
2016-12-11 21:03:39 +01:00
<uses-permission android:name= "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
2018-10-16 14:39:00 +02:00
<uses-permission android:name= "android.permission.FOREGROUND_SERVICE" />
2019-10-27 20:40:17 +01:00
<uses-permission android:name= "android.permission.READ_CALL_LOG" />
2019-03-19 09:00:38 +01:00
<uses-permission android:name= "android.permission.SEND_SMS" />
<uses-permission android:name= "android.permission.READ_SMS" />
2020-07-05 13:32:44 +05:30
<uses-permission android:name= "android.permission.RECEIVE_SMS" />
<uses-permission android:name= "android.permission.RECEIVE_MMS" />
<uses-permission android:name= "android.permission.WAKE_LOCK" />
2023-07-16 10:57:17 +02:00
<uses-permission android:name= "android.permission.REQUEST_INSTALL_PACKAGES" />
2020-01-05 17:40:54 +00:00
<uses-permission android:name= "android.permission.USE_FULL_SCREEN_INTENT" />
2023-01-02 22:28:48 +01:00
<uses-permission android:name= "android.permission.ACCESS_COARSE_LOCATION" />
2020-04-21 20:47:35 +02:00
<uses-permission android:name= "android.permission.ACCESS_FINE_LOCATION" />
2020-06-06 21:39:41 +00:00
<uses-permission android:name= "android.permission.RECORD_AUDIO" />
2023-08-21 11:46:00 +02:00
<uses-permission android:name= "android.permission.QUERY_ALL_PACKAGES" tools:ignore= "QueryAllPackagesPermission" />
Automatically reconnect to trusted networks in the background on API 29+
## Problem
On Android 10 (API 29) or later, when a trusted network has been configured, if the mobile device rejoins the network while KDE Connect is running in the background, it doesn't reconnect to any paired devices in the trusted network. It only reconnects when the user brings the app to the foreground.
## Cause
Android 10 introduced [a separate permission for background location access](https://developer.android.com/about/versions/10/privacy/changes#app-access-device-location).
When KDE Connect is running in the background with API 29+, [`TrustedNetworkHelper.currentSSID` fails to get the SSID](https://invent.kde.org/coskomh/kdeconnect-android/-/blob/d22967f4752d9590d05551279269d6a0f5ec5470/src/org/kde/kdeconnect/Helpers/TrustedNetworkHelper.java#L77) because it doesn't have the required permission. This prevents KDE Connect from verifying whether a network is trusted.
## Solution
Make KDE Connect request for background location access permission.
To request for background location access, an app must [declare it in the manifest](https://developer.android.com/training/location/permissions#background), or else the option to to enable background location access won't appear in settings.
As a side note, the permission request dialog in `TrustedNetworksActivity` doesn't require changes because after Android 11, the option to allow background location no longer shows up in a dialog. [It has to be manually enabled in settings.](https://developer.android.com/training/location/permissions#background-dialog-target-sdk-version)
## Test Plan
### Before:
On Android 10 or later, configure a trusted network and pair with a device in it. Let KDE Connect run in the background. Disconnect from the trusted network and then rejoin. KDE Connect won't automatically reconnect to the paired device.
### After:
Do the same steps as above, except after configuring the trust network, go into settings and allow KDE Connect to access location all the time. After KDE Connect rejoins the trusted network, it should automatically reconnect to the paired device.

2022-03-01 22:08:54 +00:00
<uses-permission android:name= "android.permission.ACCESS_BACKGROUND_LOCATION" />
2022-06-27 16:58:49 -04:00
<uses-permission android:name= "android.permission.READ_LOGS" tools:ignore= "ProtectedPermissions" />
<uses-permission android:name= "android.permission.SYSTEM_ALERT_WINDOW" />
2023-02-25 11:31:18 +01:00
<uses-permission android:name= "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
2024-10-02 08:03:10 +02:00
<uses-permission android:name= "android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore= "ScopedStorage" />
2023-09-01 03:34:32 +00:00
<uses-permission android:name= "android.permission.POST_NOTIFICATIONS" />
2013-08-08 04:26:06 +02:00
2013-06-06 05:57:06 +02:00
<application
2022-02-16 22:54:52 +00:00
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
2023-10-23 21:58:08 +00:00
android:label="@string/kde_connect"
2024-03-30 21:48:28 -04:00
android:banner="@mipmap/ic_launcher_banner"
2017-07-29 11:30:26 +02:00
android:supportsRtl="true"
2019-07-23 14:56:21 +02:00
android:allowBackup="false"
2023-03-04 16:20:26 +01:00
android:dataExtractionRules="@xml/data_extraction_rules"
[pretty please] allow fetching of cover art in mpris plugin from connected computer
Summary:
So from android 8 onwards it appears that fetching content from "cleartext" urls is disabled by default
https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted
I have a mpris service running on my local computer which is connected to the android, that service is also serving cover art for currently playing song. Obviously I can not have a domain set for my computer on a local machine, so cover art urls look like
`http://<ip>:<port>/<songid>.ext` . Since this restriction was introduced into android 8, kde connect is not able to fetch the art from this url.
This is patch allows connections to raw IPs addresses as well. If there is any security issues regarding this change, I'm prepared to do more work, my suggestion would be to check if IP address in this case matches paired computer's IP address, although this would still be a bit annoying (especially since whatever malicious file can be served from a "cleartext" link as well).
Test Plan:
- start some sort of server which can serve an image on a paired computer
- create mpris Player instance on a paired computer and set the `mpris:artUrl` to the served address where this image is available
- open kde connect android app, select prepared player and see default cover art instead of the served image
- change artUrl to some image from the web
- check in kde connect again and see it correctly show a remote image
Reviewers: #kde_connect, nicolasfella, albertvaka
Reviewed By: #kde_connect, nicolasfella, albertvaka
Subscribers: albertvaka, nicolasfella, andyholmes, kdeconnect
Tags: #kde_connect
Differential Revision: https://phabricator.kde.org/D21247
2019-05-17 01:38:53 +02:00
android:networkSecurityConfig="@xml/network_security_config"
2021-03-07 10:55:47 +00:00
android:theme="@style/KdeConnectTheme.NoActionBar"
2023-05-24 19:26:54 +02:00
android:name="org.kde.kdeconnect.KdeConnect"
2024-10-02 04:41:39 +00:00
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 -->
2020-07-05 13:32:44 +05:30
<receiver
android:name="com.android.mms.transaction.PushReceiver"
android:exported="true"
android:permission="android.permission.BROADCAST_WAP_PUSH">
<intent-filter >
<action android:name= "android.provider.Telephony.WAP_PUSH_DELIVER" />
<data android:mimeType= "application/vnd.wap.mms-message" />
</intent-filter>
</receiver>
<service
android:name="com.android.mms.transaction.TransactionService"
android:enabled="true"
android:exported="true" />
2013-09-18 17:27:52 +02:00
<service
2015-08-20 00:59:21 -07:00
android:name="org.kde.kdeconnect.BackgroundService"
2021-02-25 13:45:52 +01:00
android:foregroundServiceType="connectedDevice"
android:icon="@drawable/icon"
2018-03-03 15:25:08 +01:00
android:enabled="true" />
<service
android:name="org.kde.kdeconnect.Plugins.RemoteKeyboardPlugin.RemoteKeyboardService"
2019-07-05 21:55:00 +02:00
android:label="@string/remote_keyboard_service"
2023-04-05 22:03:41 +05:30
android:exported="true"
2017-01-23 09:07:18 +01:00
android:permission="android.permission.BIND_INPUT_METHOD">
<intent-filter >
<action android:name= "android.view.InputMethod" />
</intent-filter>
2018-10-16 14:43:00 +02:00
2018-03-03 15:25:08 +01:00
<meta-data
android:name="android.view.im"
android:resource="@xml/remotekeyboardplugin_method" />
2017-01-23 09:07:18 +01:00
</service>
2013-06-06 05:57:06 +02:00
<activity
2018-03-03 17:21:16 +01:00
android:name="org.kde.kdeconnect.UserInterface.MainActivity"
2024-03-02 01:53:36 +01:00
android:exported="true">
2015-08-20 00:59:21 -07:00
<intent-filter >
<action android:name= "android.intent.action.MAIN" />
2018-10-16 14:43:00 +02:00
2015-08-20 00:59:21 -07:00
<category android:name= "android.intent.category.LAUNCHER" />
2020-07-05 13:32:44 +05:30
</intent-filter>
2023-09-12 12:36:13 +02:00
<intent-filter >
<action android:name= "android.service.quicksettings.action.QS_TILE_PREFERENCES" />
</intent-filter>
2024-03-30 21:48:28 -04:00
<intent-filter >
<action android:name= "android.intent.action.MAIN" />
</intent-filter>
2024-06-11 14:01:03 +00:00
<meta-data android:name= "android.app.shortcuts"
android:resource="@xml/shortcuts" />
2015-08-20 00:59:21 -07:00
</activity>
2013-09-03 17:58:59 +02:00
<activity
2019-05-13 21:32:47 +00:00
android:name="org.kde.kdeconnect.UserInterface.PluginSettingsActivity"
2015-01-10 00:31:07 -08:00
android:label="@string/device_menu_plugins"
2022-12-27 23:53:13 +01:00
android:exported="false"
2018-03-03 17:21:16 +01:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
2015-08-20 00:59:21 -07:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
2018-03-03 17:21:16 +01:00
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
2013-08-16 10:31:01 +02:00
</activity>
2014-11-20 23:47:43 -08:00
<activity
2015-08-20 00:59:21 -07:00
android:name="org.kde.kdeconnect.UserInterface.CustomDevicesActivity"
android:label="@string/custom_devices_settings"
2022-12-27 23:53:13 +01:00
android:exported="false"
2018-03-03 17:21:16 +01:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
2015-08-20 00:59:21 -07:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
2018-03-03 17:21:16 +01:00
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
2014-11-20 23:47:43 -08:00
</activity>
2015-09-07 00:09:28 -07:00
<activity
android:name="org.kde.kdeconnect.Plugins.SharePlugin.SendFileActivity"
android:label="KDE Connect"
2022-12-27 23:53:13 +01:00
android:exported="true"
2018-03-03 17:21:16 +01:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
2015-09-07 00:09:28 -07:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
2018-03-03 17:21:16 +01:00
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
2015-09-07 00:09:28 -07:00
</activity>
2016-09-27 20:26:57 +02:00
2022-12-27 23:53:13 +01:00
<receiver android:name= "org.kde.kdeconnect.KdeConnectBroadcastReceiver"
android:exported="true">
2020-01-15 12:46:10 +01:00
<intent-filter >
<action android:name= "android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
2013-06-06 05:57:06 +02:00
<intent-filter >
<action android:name= "android.intent.action.BOOT_COMPLETED" />
</intent-filter>
2013-06-19 16:15:25 +02:00
<intent-filter >
<action android:name= "android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<intent-filter >
<action android:name= "android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
2013-06-06 05:57:06 +02:00
</receiver>
2015-09-11 16:54:43 +02:00
<activity
android:name="org.kde.kdeconnect.Plugins.FindMyPhonePlugin.FindMyPhoneActivity"
2017-02-12 21:18:14 +01:00
android:configChanges="orientation|screenSize"
2016-11-23 18:31:06 +01:00
android:excludeFromRecents="true"
2017-07-29 11:30:26 +02:00
android:label="@string/findmyphone_title"
2018-03-03 15:25:08 +01:00
android:launchMode="singleInstance" />
2015-09-11 16:54:43 +02:00
2022-12-27 23:53:13 +01:00
<receiver android:name= "org.kde.kdeconnect.Plugins.FindMyPhonePlugin.FindMyPhoneReceiver"
android:exported="true">
2020-01-05 17:40:54 +00:00
<intent-filter >
<action android:name= "org.kde.kdeconnect.Plugins.FindMyPhonePlugin.foundIt" />
</intent-filter>
</receiver>
2013-09-18 17:27:52 +02:00
<!-- Plugin - related activities and services -->
2020-04-18 03:09:30 +05:30
<activity
android:name="org.kde.kdeconnect.Plugins.ClibpoardPlugin.ClipboardFloatingActivity"
android:theme="@style/Theme.Transparent"
android:excludeFromRecents="true"/>
2013-09-18 17:27:52 +02:00
<activity
android:name="org.kde.kdeconnect.Plugins.MprisPlugin.MprisActivity"
Fixed Header in 3 plugin pages: Run Command, Multimedia control, Remote input
Summary: Fixed Header in 3 plugins: Run Command, Multimedia control, Remote input
Test Plan:
build the Android APK and analyze the Header in `Run Command`,
`Remote input` and `Multimedia control` plugins.
Reviewers: #kde_connect, sredman
Reviewed By: #kde_connect, sredman
Subscribers: ltoscano, nicolasfella, albertvaka, sredman, kdeconnect
Tags: #kde_connect
Differential Revision: https://phabricator.kde.org/D17250
2018-12-14 23:20:58 +01:00
android:label="@string/open_mpris_controls"
2018-10-16 14:43:00 +02:00
android:launchMode="singleTop"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
2015-08-20 00:59:21 -07:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
2018-03-03 17:21:16 +01:00
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
2013-09-18 17:27:52 +02:00
</activity>
2018-10-16 14:43:00 +02:00
2022-12-27 23:53:13 +01:00
<receiver android:name= "org.kde.kdeconnect.Plugins.MprisPlugin.MprisMediaNotificationReceiver"
android:exported="true">
Add MPRIS media control notification
Summary:
BUG: 337485
Adds a notification to show and control mpris players. It shows the title, artist etc. (so depends on D9083, but can easily be adapted to work without it, but that leads to less features).
The notification appears as soon as one of your connected devices plays music. If multiple devices/players are playing, it shows the information and controls for only one of these. If it stops playing, it tries to switch to another playing device/player. If those do not exist, it shows the same player, but allows starting it again.
Dismissing the notification is only possible if the showed player is paused (as effect, only when all players are paused). It automatically closes if the device or player disappears or disconnects and no other players are playing. I think this behaviour is intuitive, other native android music players have similar behaviour.
About the implementation: there are two parts to this: the notification and the media session control API. The first shows the notification and its controls. The second allows lock screen controls on older Android versions and control using e.g. headphone buttons. Since nearly all code is shared between the two parts, and the rest is mostly straightforward, I put them in the same diff.
Test Plan:
Tested on Android Nougat 7.1 (shows the notification with buttons, as expected; no lock screen controls, as expected) and Android Gingerbread 2.3 (shows a notification without buttons, lock screen controls work, so as expected).
I am not able to test with multiple desktops, so testing that would be appreciated.
Disabling buttons when not available should work, but all players I tested always allowed next/previous/play/pause.
Reviewers: #kde_connect, nicolasfella
Reviewed By: #kde_connect, nicolasfella
Subscribers: apol, albertvaka, nicolasfella
Tags: #kde_connect
Maniphest Tasks: T6512
Differential Revision: https://phabricator.kde.org/D9266
2017-12-11 12:01:13 +01:00
<intent-filter >
<action android:name= "android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
2015-09-12 12:28:27 +02:00
<activity
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandActivity"
Fixed Header in 3 plugin pages: Run Command, Multimedia control, Remote input
Summary: Fixed Header in 3 plugins: Run Command, Multimedia control, Remote input
Test Plan:
build the Android APK and analyze the Header in `Run Command`,
`Remote input` and `Multimedia control` plugins.
Reviewers: #kde_connect, sredman
Reviewed By: #kde_connect, sredman
Subscribers: ltoscano, nicolasfella, albertvaka, sredman, kdeconnect
Tags: #kde_connect
Differential Revision: https://phabricator.kde.org/D17250
2018-12-14 23:20:58 +01:00
android:label="@string/pref_plugin_runcommand"
2022-12-27 23:53:13 +01:00
android:exported="false"
2018-03-03 17:21:16 +01:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
2015-09-12 12:28:27 +02:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
2018-03-03 17:21:16 +01:00
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
2015-09-12 12:28:27 +02:00
</activity>
2018-10-16 14:43:00 +02:00
<activity
2023-06-03 19:03:15 +02:00
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidgetConfigActivity"
2018-10-16 14:43:00 +02:00
android:excludeFromRecents="true"
android:label="@string/pref_plugin_runcommand"
2018-07-30 18:15:00 +02:00
android:launchMode="singleTask"
android:noHistory="true"
2024-03-02 01:53:36 +01:00
android:screenOrientation="user"/>
2018-10-16 14:43:00 +02:00
2018-07-30 18:15:00 +02:00
<service
2023-05-29 14:28:18 +02:00
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.CommandsRemoteViewsService"
2018-10-16 14:43:00 +02:00
android:exported="false"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<receiver
2023-05-29 14:28:18 +02:00
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidgetProvider"
2022-12-27 23:53:13 +01:00
android:label="@string/pref_plugin_runcommand"
android:exported="true">
2018-07-30 18:15:00 +02:00
<intent-filter >
<action android:name= "android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter >
<action android:name= "RUN_COMMAND_ACTION" />
</intent-filter>
2018-10-16 14:43:00 +02:00
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/remotecommandplugin_widget" />
</receiver>
2018-07-30 18:15:00 +02:00
2022-12-27 23:53:13 +01:00
<activity android:name= "org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandUrlActivity"
android:exported="true">
2018-07-27 07:55:30 +02:00
<intent-filter >
<action android:name= "android.intent.action.VIEW" />
2018-10-16 14:43:00 +02:00
<action android:name= "android.nfc.action.NDEF_DISCOVERED" />
2018-07-27 07:55:30 +02:00
<category android:name= "android.intent.category.DEFAULT" />
<category android:name= "android.intent.category.BROWSABLE" />
2018-10-16 14:43:00 +02:00
<data
android:host="runcommand"
android:scheme="kdeconnect" />
2018-07-27 07:55:30 +02:00
</intent-filter>
2015-09-12 12:28:27 +02:00
</activity>
2020-03-27 20:23:02 +01:00
<activity
android:name="org.kde.kdeconnect.Plugins.BigscreenPlugin.BigscreenActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/pref_plugin_bigscreen"
2022-12-27 23:53:13 +01:00
android:exported="true"
2020-03-27 20:23:02 +01:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity"
android:windowSoftInputMode="stateHidden|adjustResize">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
2014-06-26 17:37:32 +00:00
<activity
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity"
Fixed Header in 3 plugin pages: Run Command, Multimedia control, Remote input
Summary: Fixed Header in 3 plugins: Run Command, Multimedia control, Remote input
Test Plan:
build the Android APK and analyze the Header in `Run Command`,
`Remote input` and `Multimedia control` plugins.
Reviewers: #kde_connect, sredman
Reviewed By: #kde_connect, sredman
Subscribers: ltoscano, nicolasfella, albertvaka, sredman, kdeconnect
Tags: #kde_connect
Differential Revision: https://phabricator.kde.org/D17250
2018-12-14 23:20:58 +01:00
android:label="@string/pref_plugin_mousepad"
2022-12-27 23:53:13 +01:00
android:exported="false"
2022-01-15 20:35:45 +00:00
android:launchMode="singleTop"
2018-07-27 20:57:14 +02:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
2022-01-15 20:35:45 +00:00
<activity
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.ComposeSendActivity"
2023-04-26 20:16:08 +00:00
android:label="@string/compose_send_title"
2022-12-27 23:53:13 +01:00
android:exported="false"
2023-04-26 20:16:08 +00:00
android:parentActivityName="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity"
android:windowSoftInputMode="adjustResize">
2022-01-15 20:35:45 +00:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity" />
</activity>
2025-07-02 08:55:18 +02:00
<!-- TODO: Remove? This is only used by https://github.com/andOTP/andOTP, which is unmaintained since 2021. Do people use forks or can we remove this? -->
2021-03-09 16:47:15 +00:00
<activity
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.SendKeystrokesToHostActivity"
android:label="@string/pref_plugin_mousepad_send_keystrokes"
2023-04-05 22:03:41 +05:30
android:exported="true"
2021-03-09 16:47:15 +00:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
<!-- Accept data with "text/x - keystrokes" to send the text to the connected host and emulate keystrokes -->
<intent-filter >
<action android:name= "android.intent.action.SEND" />
<category android:name= "android.intent.category.DEFAULT" />
<data android:mimeType= "text/x-keystrokes" />
</intent-filter>
</activity>
2018-07-27 20:57:14 +02:00
<activity
android:name="org.kde.kdeconnect.Plugins.PresenterPlugin.PresenterActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/pref_plugin_presenter"
2022-12-27 23:53:13 +01:00
android:exported="false"
2018-03-03 17:21:16 +01:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity"
2018-03-03 15:25:08 +01:00
android:windowSoftInputMode="stateHidden|adjustResize">
2015-08-20 00:59:21 -07:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
2018-03-03 17:21:16 +01:00
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
2014-06-26 17:37:32 +00:00
</activity>
2013-09-18 17:31:56 +02:00
<activity
2015-01-31 00:16:06 -08:00
android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareActivity"
2022-12-27 23:53:13 +01:00
android:exported="true"
2021-11-18 22:52:48 +01:00
android:label="@string/manifest_label_share">
2013-09-18 17:31:56 +02:00
<intent-filter >
<action android:name= "android.intent.action.SEND" />
2015-08-20 00:59:21 -07:00
2013-09-18 17:31:56 +02:00
<category android:name= "android.intent.category.DEFAULT" />
2015-08-20 00:59:21 -07:00
2013-09-18 17:31:56 +02:00
<data android:mimeType= "*/*" />
</intent-filter>
2013-09-27 02:58:16 +02:00
<intent-filter >
<action android:name= "android.intent.action.SEND_MULTIPLE" />
2015-08-20 00:59:21 -07:00
2013-09-27 02:58:16 +02:00
<category android:name= "android.intent.category.DEFAULT" />
2015-08-20 00:59:21 -07:00
2013-09-27 02:58:16 +02:00
<data android:mimeType= "*/*" />
</intent-filter>
2018-03-03 15:25:08 +01:00
2017-07-29 11:30:26 +02:00
<meta-data
android:name="android.service.chooser.chooser_target_service"
android:value="org.kde.kdeconnect.Plugins.SharePlugin.ShareChooserTargetService" />
2013-09-18 17:31:56 +02:00
</activity>
2018-03-03 15:25:08 +01:00
2022-12-27 23:53:13 +01:00
<receiver android:name= "org.kde.kdeconnect.Plugins.SharePlugin.ShareBroadcastReceiver"
android:exported="true">
2019-03-08 19:07:01 +01:00
<intent-filter >
<action android:name= "org.kde.kdeconnect.Plugins.SharePlugin.CancelShare" />
</intent-filter>
</receiver>
2017-12-20 17:49:36 +01:00
<provider
2018-12-27 15:40:57 +01:00
android:name="androidx.core.content.FileProvider"
2024-12-27 18:20:08 +00:00
android:authorities="${applicationId}.fileprovider"
2017-12-20 17:49:36 +01:00
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/fileprovider_paths" />
</provider>
2018-03-03 15:25:08 +01:00
2015-08-20 00:59:21 -07:00
<service
android:name="org.kde.kdeconnect.Plugins.NotificationsPlugin.NotificationReceiver"
2022-12-27 23:53:13 +01:00
android:exported="true"
2018-03-03 15:25:08 +01:00
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
2013-09-18 17:27:52 +02:00
<intent-filter >
<action android:name= "android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
2017-07-29 11:30:26 +02:00
<service
android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareChooserTargetService"
2022-12-27 23:53:13 +01:00
android:exported="true"
2017-07-29 11:30:26 +02:00
android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
<intent-filter >
<action android:name= "android.service.chooser.ChooserTargetService" />
</intent-filter>
2018-03-03 15:25:08 +01:00
</service>
2021-04-04 06:34:52 +00:00
<service
android:name="org.kde.kdeconnect.Plugins.MouseReceiverPlugin.MouseReceiverService"
2022-12-27 23:53:13 +01:00
android:exported="true"
2021-04-04 06:34:52 +00:00
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter >
<action android:name= "android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/mouse_receiver_service" />
</service>
2013-09-18 17:27:52 +02:00
2015-01-10 00:22:53 -08:00
<activity
android:name="org.kde.kdeconnect.Plugins.NotificationsPlugin.NotificationFilterActivity"
android:label="@string/title_activity_notification_filter"
2019-05-13 21:32:47 +00:00
android:parentActivityName="org.kde.kdeconnect.UserInterface.PluginSettingsActivity">
2015-01-10 00:22:53 -08:00
<meta-data
android:name="android.support.PARENT_ACTIVITY"
2019-05-13 21:32:47 +00:00
android:value="org.kde.kdeconnect.UserInterface.PluginSettingsActivity" />
2015-01-10 00:22:53 -08:00
</activity>
2019-10-27 20:40:17 +01:00
<activity
android:name="org.kde.kdeconnect.UserInterface.TrustedNetworksActivity"
android:label="@string/trusted_networks"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
2021-08-21 13:11:55 +00:00
<activity
android:name="org.kde.kdeconnect.UserInterface.About.EasterEggActivity"
android:label="@string/easter_egg"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
2019-10-27 20:40:17 +01:00
2021-08-21 13:11:55 +00:00
<activity
android:name="org.kde.kdeconnect.UserInterface.About.AboutKDEActivity"
android:label="@string/about_kde"
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.UserInterface.About.LicensesActivity"
android:label="@string/licenses"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
2021-08-22 17:37:58 +03:00
<service
android:name="org.kde.kdeconnect.Plugins.ClibpoardPlugin.ClipboardTileService"
android:icon="@drawable/ic_baseline_content_paste_24"
2022-12-27 23:53:13 +01:00
android:exported="true"
2021-08-22 17:37:58 +03:00
android:label="@string/send_clipboard"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter >
<action android:name= "android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>
2022-01-24 01:56:02 +01:00
2022-12-27 23:53:13 +01:00
<service android:name= "org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandControlsProviderService"
android:label="@string/kde_connect"
android:exported="true"
2021-06-24 23:53:00 +03:00
android:permission="android.permission.BIND_CONTROLS">
<intent-filter >
<action android:name= "android.service.controls.ControlsProviderService" />
</intent-filter>
</service>
2013-06-06 05:57:06 +02:00
</application>
2020-07-05 13:32:44 +05:30
</manifest>