mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-22 01:51:47 +00:00
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.
445 lines
21 KiB
XML
445 lines
21 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
package="org.kde.kdeconnect_tp"
|
|
android:versionCode="12405"
|
|
android:versionName="1.24.5">
|
|
|
|
<uses-feature
|
|
android:name="android.hardware.telephony"
|
|
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.ACCESS_NETWORK_STATE" />
|
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_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" />
|
|
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.VIBRATE" />
|
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
|
<uses-permission android:name="android.permission.SEND_SMS" />
|
|
<uses-permission android:name="android.permission.READ_SMS" />
|
|
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
|
<uses-permission android:name="android.permission.RECEIVE_MMS" />
|
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
<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.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" />
|
|
|
|
<application
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:roundIcon="@mipmap/ic_launcher_round"
|
|
android:label="KDE Connect"
|
|
android:supportsRtl="true"
|
|
android:allowBackup="false"
|
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
|
android:networkSecurityConfig="@xml/network_security_config"
|
|
android:localeConfig="@xml/locales_config"
|
|
android:theme="@style/KdeConnectTheme.NoActionBar"
|
|
android:name="org.kde.kdeconnect.KdeConnect"
|
|
android:enableOnBackInvokedCallback="true">
|
|
|
|
<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" />
|
|
|
|
<service
|
|
android:name="org.kde.kdeconnect.BackgroundService"
|
|
android:foregroundServiceType="connectedDevice"
|
|
android:icon="@drawable/icon"
|
|
android:enabled="true" />
|
|
<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" />
|
|
</intent-filter>
|
|
|
|
<meta-data
|
|
android:name="android.view.im"
|
|
android:resource="@xml/remotekeyboardplugin_method" />
|
|
</service>
|
|
|
|
<activity
|
|
android:name="org.kde.kdeconnect.UserInterface.MainActivity"
|
|
android:label="KDE Connect"
|
|
android:exported="true"
|
|
android:theme="@style/KdeConnectTheme.NoActionBar">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
</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"
|
|
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
|
|
</activity>
|
|
<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"
|
|
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
|
|
</activity>
|
|
<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"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.PACKAGE_REPLACED" />
|
|
|
|
<data
|
|
android:host="kdeconnect"
|
|
android:path="/"
|
|
android:scheme="package" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
|
</intent-filter>
|
|
<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>
|
|
</receiver>
|
|
|
|
<activity
|
|
android:name="org.kde.kdeconnect.Plugins.FindMyPhonePlugin.FindMyPhoneActivity"
|
|
android:configChanges="orientation|screenSize"
|
|
android:excludeFromRecents="true"
|
|
android:label="@string/findmyphone_title"
|
|
android:launchMode="singleInstance" />
|
|
|
|
<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>
|
|
</receiver>
|
|
|
|
<!-- Plugin-related activities and services -->
|
|
|
|
<activity
|
|
android:name="org.kde.kdeconnect.Plugins.ClibpoardPlugin.ClipboardFloatingActivity"
|
|
android:theme="@style/Theme.Transparent"
|
|
android:excludeFromRecents="true"/>
|
|
|
|
<activity
|
|
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"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MEDIA_BUTTON" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<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:excludeFromRecents="true"
|
|
android:label="@string/pref_plugin_runcommand"
|
|
android:launchMode="singleTask"
|
|
android:noHistory="true"
|
|
android:screenOrientation="user"
|
|
android:theme="@style/Theme.AppCompat.Light.Dialog" />
|
|
|
|
<service
|
|
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandWidgetDataProviderService"
|
|
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:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="RUN_COMMAND_ACTION" />
|
|
</intent-filter>
|
|
|
|
<meta-data
|
|
android:name="android.appwidget.provider"
|
|
android:resource="@xml/remotecommandplugin_widget" />
|
|
</receiver>
|
|
|
|
<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" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<data
|
|
android:host="runcommand"
|
|
android:scheme="kdeconnect" />
|
|
</intent-filter>
|
|
</activity>
|
|
<activity
|
|
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
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
|
|
</activity>
|
|
<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
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
|
|
</activity>
|
|
<activity
|
|
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.ComposeSendActivity"
|
|
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" />
|
|
</activity>
|
|
<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"
|
|
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>
|
|
<activity
|
|
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
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
|
|
</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" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<data android:mimeType="*/*" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<data android:mimeType="*/*" />
|
|
</intent-filter>
|
|
|
|
<meta-data
|
|
android:name="android.service.chooser.chooser_target_service"
|
|
android:value="org.kde.kdeconnect.Plugins.SharePlugin.ShareChooserTargetService" />
|
|
</activity>
|
|
|
|
<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>
|
|
</receiver>
|
|
|
|
<provider
|
|
android:name="androidx.core.content.FileProvider"
|
|
android:authorities="org.kde.kdeconnect_tp.fileprovider"
|
|
android:exported="false"
|
|
android:grantUriPermissions="true">
|
|
<meta-data
|
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
|
android:resource="@xml/fileprovider_paths" />
|
|
</provider>
|
|
|
|
<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" />
|
|
</intent-filter>
|
|
</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" />
|
|
</intent-filter>
|
|
</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" />
|
|
</intent-filter>
|
|
<meta-data
|
|
android:name="android.accessibilityservice"
|
|
android:resource="@xml/mouse_receiver_service" />
|
|
</service>
|
|
-->
|
|
|
|
<activity
|
|
android:name="org.kde.kdeconnect.Plugins.NotificationsPlugin.NotificationFilterActivity"
|
|
android:label="@string/title_activity_notification_filter"
|
|
android:parentActivityName="org.kde.kdeconnect.UserInterface.PluginSettingsActivity">
|
|
<meta-data
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
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"
|
|
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.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>
|
|
|
|
<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>
|
|
|
|
<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>
|
|
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
|
</intent-filter>
|
|
</service>
|
|
|
|
<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" />
|
|
</intent-filter>
|
|
</service>
|
|
</application>
|
|
|
|
</manifest>
|