Files
QSfera/Android/qsferaApp/src/main/AndroidManifest.xml
T
Курнат Андрей 2315f25754 Initial QSfera import
2026-06-07 10:20:04 +03:00

275 lines
12 KiB
XML

<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2023 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!--
WRITE_EXTERNAL_STORAGE may be enabled or disabled by the user after installation in
API >= 23; the app needs to handle this
-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--
Notifications are off by default since API 33;
See note in https://developer.android.com/develop/ui/views/notifications/notification-permission
-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!--
Next permissions are always approved in installation time,
the apps needs to do nothing special in runtime
-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<application
android:name=".MainApp"
android:allowBackup="false"
android:icon="@mipmap/icon"
android:label="@string/app_name"
android:localeConfig="@xml/locales_config"
android:networkSecurityConfig="@xml/network_security_config"
android:preserveLegacyExternalStorage="true"
android:requestLegacyExternalStorage="true"
android:resizeableActivity="true"
android:supportsPictureInPicture="false"
android:taskAffinity=""
android:theme="@style/Theme.qsfera.Toolbar">
<activity
android:name=".ui.preview.PreviewVideoActivity"
android:label="@string/video_preview_label"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.qsfera.Video"
android:exported="false" />
<meta-data
android:name="android.content.APP_RESTRICTIONS"
android:resource="@xml/managed_configurations" />
<activity
android:name=".presentation.releasenotes.ReleaseNotesActivity"
android:label="@string/release_notes_label"
android:exported="false" />
<activity
android:name=".presentation.settings.privacypolicy.PrivacyPolicyActivity"
android:label="@string/actionbar_privacy_policy" />
<activity android:name=".presentation.settings.SettingsActivity" />
<activity android:name=".presentation.migration.StorageMigrationActivity"
android:theme="@style/Theme.qsfera.Toolbar.Fill" />
<activity
android:name=".ui.activity.SplashActivity"
android:exported="true"
android:theme="@style/Theme.qsfera.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.activity.FileDisplayActivity"
android:configChanges="orientation|screenSize"
android:theme="@style/Theme.qsfera.Toolbar.Drawer"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".ui.activity.ReceiveExternalFilesActivity"
android:configChanges="orientation|screenSize"
android:label="@string/receive_external_files_label"
android:excludeFromRecents="true"
android:exported="true"
android:taskAffinity="">
<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>
</activity>
<activity
android:name=".ui.preview.PreviewImageActivity"
android:label="@string/image_preview_label"
android:theme="@style/Theme.qsfera.Overlay" />
<service
android:name=".presentation.authentication.AccountAuthenticatorService"
android:exported="true">
<intent-filter android:priority="100">
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
<service
android:name=".syncadapter.FileSyncService"
android:exported="true">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter_files" />
</service>
<provider
android:name=".providers.FileContentProvider"
android:authorities="@string/authority"
android:enabled="true"
android:exported="false"
android:label="@string/sync_string_files"
android:syncable="true" />
<provider
android:name=".presentation.sharing.sharees.UsersAndGroupsSearchProvider"
android:authorities="@string/search_suggest_authority"
android:enabled="true"
android:exported="false"
android:label="@string/search_users_and_groups_hint" />
<provider
android:name=".presentation.documentsprovider.DocumentsStorageProvider"
android:authorities="@string/document_provider_authority"
android:exported="true"
android:grantUriPermissions="true"
android:permission="android.permission.MANAGE_DOCUMENTS">
<intent-filter>
<action android:name="android.content.action.DOCUMENTS_PROVIDER" />
</intent-filter>
</provider>
<!-- new provider used to generate URIs without file:// scheme (forbidden from Android 7) -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="@string/file_provider_authority"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/exposed_filepaths"
tools:replace="android:resource" />
</provider>
<service android:name=".services.OperationsService" />
<service
android:name="androidx.work.impl.foreground.SystemForegroundService"
android:foregroundServiceType="dataSync"
android:exported="false"
tools:replace="android:foregroundServiceType" />
<service
android:name=".media.MediaService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
<activity
android:name=".presentation.security.passcode.PassCodeActivity"
android:label="@string/passcode_label"
android:screenOrientation="portrait" />
<activity
android:name=".presentation.conflicts.ConflictsResolveActivity" />
<activity
android:name=".presentation.logging.LogsListActivity"
android:label="@string/prefs_log_open_logs_list_view"
android:configChanges="orientation|screenSize" />
<activity android:name=".ui.errorhandling.ErrorShowActivity" />
<activity
android:name=".ui.activity.UploadListActivity"
android:label="@string/bottom_nav_uploads"
android:theme="@style/Theme.qsfera.Toolbar.Drawer" />
<activity
android:name=".ui.activity.WhatsNewActivity"
android:label="@string/whats_new_label"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name=".ui.activity.CopyToClipboardActivity"
android:icon="@drawable/copy_link"
android:label="@string/copy_link" />
<activity android:name=".ui.activity.FolderPickerActivity"
android:label="@string/folder_picker_label"/>
<activity
android:name=".presentation.sharing.ShareActivity"
android:exported="false"
android:label="@string/share_dialog_title"
android:launchMode="singleTop"
android:theme="@style/Theme.qsfera.Toolbar"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/users_and_groups_searchable" />
</activity>
<activity
android:name=".presentation.security.pattern.PatternActivity"
android:screenOrientation="portrait"
android:label="@string/pattern_label" />
<activity android:name=".presentation.security.biometric.BiometricActivity" />
<!-- Own taskAffinity + singleTask so LoginActivity always runs in its own task.
During re-auth, startActivityForResult overrides singleTask, so the first
instance still lands in the main task — but the OAuth redirect instance gets
its own task and finishes the orphaned one via a static reference.
autoRemoveFromRecents cleans the login task from recents once it finishes. -->
<activity
android:name=".presentation.authentication.LoginActivity"
android:autoRemoveFromRecents="true"
android:exported="true"
android:label="@string/login_label"
android:launchMode="singleTask"
android:taskAffinity="eu.qsfera.android.login"
android:theme="@style/Theme.qsfera.Toolbar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="@string/oauth2_redirect_uri_host"
android:scheme="@string/oauth2_redirect_uri_scheme" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/deep_link_uri_schemes" />
</intent-filter>
</activity>
</application>
</manifest>