Initial QSfera import
This commit is contained in:
@@ -0,0 +1,274 @@
|
||||
<?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>
|
||||
Reference in New Issue
Block a user