use Android Studio default Ctrl-Alt-L to format all AndroidManifest.xml

This commit is contained in:
Hans-Christoph Steiner 2021-04-22 10:29:55 +02:00
parent deea4bd696
commit 24ed554b1d
4 changed files with 545 additions and 504 deletions

View File

@ -1,18 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us --> <!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="org.fdroid.fdroid.tests" package="org.fdroid.fdroid.tests"
android:versionCode="1" android:versionCode="1"
android:versionName="1.0"> android:versionName="1.0">
<uses-sdk tools:overrideLibrary="android_libs.ub_uiautomator" /> <uses-sdk tools:overrideLibrary="android_libs.ub_uiautomator" />
<!-- We add an application tag here just so that we can indicate that <!-- We add an application tag here just so that we can indicate that
this package needs to link against the android.test library, this package needs to link against the android.test library,
which is needed when building test cases. --> which is needed when building test cases. -->
<application> <application>
<uses-library android:name="android.test.runner" <uses-library
android:name="android.test.runner"
android:required="false" /> android:required="false" />
</application> </application>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest> </manifest>

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- This file should be outside of release manifest (in this case app/src/mock/Manifest.xml --> <!-- This file should be outside of release manifest (in this case app/src/mock/Manifest.xml -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!--required to enable/disable system animations from the app itself during Espresso test runs--> <!--required to enable/disable system animations from the app itself during Espresso test runs-->
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE"/> <uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
</manifest> </manifest>

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
* Copyright (C) 2010-2012 Ciaran Gultnieks * Copyright (C) 2010-2012 Ciaran Gultnieks
* Copyright (C) 2013-2017 Peter Serwylo * Copyright (C) 2013-2017 Peter Serwylo
@ -23,90 +24,128 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
--> -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fdroid.fdroid" package="org.fdroid.fdroid"
android:installLocation="auto"> android:installLocation="auto">
<uses-feature android:name="android.hardware.nfc" android:required="false"/> <uses-feature
<uses-feature android:name="android.hardware.bluetooth" android:required="false"/> android:name="android.hardware.nfc"
<uses-feature android:name="android.hardware.usb.host" android:required="false"/> android:required="false" />
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET"/> <uses-feature
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> android:name="android.hardware.usb.host"
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> android:required="false" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_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.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.USB_PERMISSION"
android:maxSdkVersion="22"/> <!-- maybe unnecessary -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_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.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission
android:name="android.permission.USB_PERMISSION"
android:maxSdkVersion="22" /><!-- maybe unnecessary -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application> <application>
<activity <activity
android:label="@string/swap" android:name=".nearby.SwapWorkflowActivity"
android:name=".nearby.SwapWorkflowActivity" android:configChanges="orientation|keyboardHidden"
android:parentActivityName=".views.main.MainActivity" android:label="@string/swap"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait" android:parentActivityName=".views.main.MainActivity"
android:configChanges="orientation|keyboardHidden"> android:screenOrientation="portrait">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity"/> android:value=".views.main.MainActivity" />
</activity> </activity>
<activity
android:name=".panic.PanicPreferencesActivity"
android:label="@string/panic_settings"
android:parentActivityName=".views.main.MainActivity">
<intent-filter>
<action android:name="info.guardianproject.panic.action.CONNECT" />
<action android:name="info.guardianproject.panic.action.DISCONNECT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity" />
</activity>
<activity
android:name=".panic.SelectInstalledAppsActivity"
android:parentActivityName=".panic.PanicPreferencesActivity" />
<activity
android:name=".panic.PanicResponderActivity"
android:noHistory="true"
android:theme="@android:style/Theme.NoDisplay">
<!-- this can never have launchMode singleTask or singleInstance! -->
<intent-filter>
<action android:name="info.guardianproject.panic.action.TRIGGER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".panic.ExitActivity"
android:theme="@android:style/Theme.NoDisplay" />
<activity
android:name=".panic.CalculatorActivity"
android:enabled="false"
android:icon="@mipmap/ic_calculator_launcher"
android:label="@string/hiding_calculator">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".nearby.WifiStateChangeReceiver"> <receiver android:name=".nearby.WifiStateChangeReceiver">
<intent-filter> <intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE"/> <action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver android:name=".receiver.DeviceStorageReceiver"> <receiver android:name=".receiver.DeviceStorageReceiver">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.DEVICE_STORAGE_LOW"/> <action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<service <receiver android:name=".nearby.UsbDeviceAttachedReceiver">
android:name=".nearby.WifiStateChangeService"
android:exported="false"/>
<service android:name=".nearby.SwapService"/>
<service
android:name=".nearby.LocalRepoService"
android:exported="false"/>
<service
android:name=".nearby.TreeUriScannerIntentService"
android:exported="false"/>
<service
android:name=".nearby.SDCardScannerService"
android:exported="false"/>
<receiver
android:name=".nearby.UsbDeviceAttachedReceiver">
<intent-filter> <intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter> </intent-filter>
<meta-data <meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter"/> android:resource="@xml/device_filter" />
</receiver> </receiver>
<receiver <receiver android:name=".nearby.UsbDeviceDetachedReceiver">
android:name=".nearby.UsbDeviceDetachedReceiver">
<intent-filter> <intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"/> <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter> </intent-filter>
<meta-data <meta-data
android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
android:resource="@xml/device_filter"/> android:resource="@xml/device_filter" />
</receiver> </receiver>
<receiver android:name=".nearby.UsbDeviceMediaMountedReceiver"> <receiver android:name=".nearby.UsbDeviceMediaMountedReceiver">
<intent-filter> <intent-filter>
@ -120,51 +159,20 @@
</intent-filter> </intent-filter>
</receiver> </receiver>
<activity <service
android:name=".panic.PanicPreferencesActivity" android:name=".nearby.WifiStateChangeService"
android:label="@string/panic_settings" android:exported="false" />
android:parentActivityName=".views.main.MainActivity"> <service android:name=".nearby.SwapService" />
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity"/>
<intent-filter> <service
<action android:name="info.guardianproject.panic.action.CONNECT"/> android:name=".nearby.LocalRepoService"
<action android:name="info.guardianproject.panic.action.DISCONNECT"/> android:exported="false" />
<service
<category android:name="android.intent.category.DEFAULT"/> android:name=".nearby.TreeUriScannerIntentService"
</intent-filter> android:exported="false" />
</activity> <service
<activity android:name=".nearby.SDCardScannerService"
android:name=".panic.SelectInstalledAppsActivity" android:exported="false" />
android:parentActivityName=".panic.PanicPreferencesActivity"/>
<activity
android:name=".panic.PanicResponderActivity"
android:noHistory="true"
android:theme="@android:style/Theme.NoDisplay">
<!-- this can never have launchMode singleTask or singleInstance! -->
<intent-filter>
<action android:name="info.guardianproject.panic.action.TRIGGER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:name=".panic.ExitActivity"
android:theme="@android:style/Theme.NoDisplay"/>
<activity
android:name=".panic.CalculatorActivity"
android:enabled="false"
android:icon="@mipmap/ic_calculator_launcher"
android:label="@string/hiding_calculator">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application> </application>

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
* Copyright (C) 2010-2012 Ciaran Gultnieks * Copyright (C) 2010-2012 Ciaran Gultnieks
* Copyright (C) 2013-2017 Peter Serwylo * Copyright (C) 2013-2017 Peter Serwylo
@ -22,394 +23,328 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
--> -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="org.fdroid.fdroid" package="org.fdroid.fdroid"
android:installLocation="auto"> android:installLocation="auto">
<supports-screens <supports-screens
android:anyDensity="true" android:anyDensity="true"
android:largeScreens="true" android:largeScreens="true"
android:normalScreens="true" android:normalScreens="true"
android:resizeable="true" android:resizeable="true"
android:smallScreens="true" android:smallScreens="true"
android:xlargeScreens="true" android:xlargeScreens="true" />
/>
<uses-feature <uses-feature
android:name="android.hardware.telephony" android:name="android.hardware.telephony"
android:required="false"/> android:required="false" />
<uses-feature <uses-feature
android:name="android.hardware.wifi" android:name="android.hardware.wifi"
android:required="false"/> android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false"/>
<uses-permission android:name="android.permission.INTERNET"/> <uses-feature
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> android:name="android.hardware.touchscreen"
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application <application
android:name=".FDroidApp" android:name=".FDroidApp"
android:icon="@drawable/ic_launcher" android:allowBackup="true"
android:label="@string/app_name" android:description="@string/app_description"
android:description="@string/app_description" android:fullBackupContent="@xml/backup_rules"
android:allowBackup="true" android:icon="@drawable/ic_launcher"
android:fullBackupContent="@xml/backup_rules" android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config" android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/Theme.App" android:supportsRtl="true"
android:supportsRtl="true"> android:theme="@style/Theme.App">
<provider
android:authorities="${applicationId}.data.AppProvider"
android:name="org.fdroid.fdroid.data.AppProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.RepoProvider"
android:name="org.fdroid.fdroid.data.RepoProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.ApkProvider"
android:name="org.fdroid.fdroid.data.ApkProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.TempApkProvider"
android:name="org.fdroid.fdroid.data.TempApkProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.TempAppProvider"
android:name="org.fdroid.fdroid.data.TempAppProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.InstalledAppProvider"
android:name="org.fdroid.fdroid.data.InstalledAppProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.AppPrefsProvider"
android:name="org.fdroid.fdroid.data.AppPrefsProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.PackageIdProvider"
android:name="org.fdroid.fdroid.data.PackageIdProvider"
android:exported="false"/>
<provider
android:authorities="${applicationId}.data.CategoryProvider"
android:name="org.fdroid.fdroid.data.CategoryProvider"
android:exported="false"/>
<provider
android:name="org.fdroid.fdroid.installer.ApkFileProvider"
android:authorities="${applicationId}.installer.ApkFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/apk_file_provider"/>
</provider>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.installer"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/installer_file_provider"/>
</provider>
<activity <activity
android:name=".privileged.views.InstallConfirmActivity" android:name=".privileged.views.InstallConfirmActivity"
android:label="@string/menu_install" android:configChanges="layoutDirection|locale"
android:excludeFromRecents="true" android:excludeFromRecents="true"
android:parentActivityName=".views.main.MainActivity" android:label="@string/menu_install"
android:configChanges="layoutDirection|locale"> android:parentActivityName=".views.main.MainActivity">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity"/> android:value=".views.main.MainActivity" />
</activity>
<activity
android:name=".privileged.views.UninstallDialogActivity"
android:excludeFromRecents="true" />
<activity
android:name=".views.ManageReposActivity"
android:label="@string/menu_manage"
android:launchMode="singleTask"
android:parentActivityName=".views.main.MainActivity"
android:configChanges="layoutDirection|locale">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity"/>
</activity>
<activity
android:name=".NfcNotEnabledActivity"
android:noHistory="true"
android:configChanges="layoutDirection|locale"/>
<activity
android:name=".views.RepoDetailsActivity"
android:label="@string/repo_details"
android:parentActivityName=".views.ManageReposActivity"
android:windowSoftInputMode="stateHidden"
android:configChanges="layoutDirection|locale">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.ManageReposActivity"/>
</activity> </activity>
<activity <activity
android:name=".views.AppDetailsActivity" android:name=".privileged.views.UninstallDialogActivity"
android:label="@string/app_details" android:excludeFromRecents="true" />
android:exported="true"
android:parentActivityName=".views.main.MainActivity" <activity
android:configChanges="layoutDirection|locale"> android:name=".views.ManageReposActivity"
android:configChanges="layoutDirection|locale"
android:label="@string/menu_manage"
android:launchMode="singleTask"
android:parentActivityName=".views.main.MainActivity">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity"/> android:value=".views.main.MainActivity" />
</activity> </activity>
<activity
android:name=".acra.CrashReportActivity"
android:process=":error_report"
android:launchMode="singleInstance"
android:excludeFromRecents="true"
android:finishOnTaskLaunch="true"/>
<activity android:name=".views.ScreenShotsActivity"/>
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
<activity android:name=".data.ObbUrlActivity"
android:theme="@android:style/Theme.NoDisplay"/>
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
<activity
android:name=".installer.DefaultInstallerActivity"
android:theme="@style/AppThemeTransparent"/>
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
<activity
android:name=".installer.ErrorDialogActivity"
android:theme="@style/AppThemeTransparent"/>
<receiver android:name=".receiver.StartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.HOME"/>
</intent-filter>
</receiver>
<receiver android:name=".receiver.PackageManagerReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_CHANGED"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
<receiver android:name=".NotificationBroadcastReceiver" android:exported="false">
<!-- Doesn't require an intent-filter because it is explicitly invoked via Intent.setClass() -->
</receiver>
<receiver android:name=".receiver.DeviceStorageReceiver">
<intent-filter>
<action android:name="android.intent.action.DEVICE_STORAGE_LOW"/>
</intent-filter>
</receiver>
<service
android:name=".UpdateService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="false"/>
<service
android:name=".UpdateJobService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"/>
<service
android:name=".net.DownloaderService"
android:exported="false"/>
<service
android:name=".installer.InstallerService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="false"/>
<service
android:name=".DeleteCacheService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="false"/>
<service
android:name=".net.ConnectivityMonitorService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="false"/>
<service
android:name=".installer.InstallManagerService"
android:exported="false"/>
<service
android:name=".installer.InstallHistoryService"
android:exported="false"/>
<service
android:name=".installer.ObfInstallerService"
android:exported="false"/>
<service
android:name=".data.InstalledAppProviderService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="false"/>
<service
android:name=".AddRepoIntentService"
android:exported="false"/>
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
android:exported="false"
tools:node="remove" />
<activity <activity
android:name=".views.main.MainActivity" android:name=".NfcNotEnabledActivity"
android:launchMode="singleTop" android:configChanges="layoutDirection|locale"
android:windowSoftInputMode="adjustResize"> android:noHistory="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/> <activity
android:name=".views.RepoDetailsActivity"
android:configChanges="layoutDirection|locale"
android:label="@string/repo_details"
android:parentActivityName=".views.ManageReposActivity"
android:windowSoftInputMode="stateHidden">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.ManageReposActivity" />
</activity>
<activity
android:name=".views.AppDetailsActivity"
android:configChanges="layoutDirection|locale"
android:exported="true"
android:label="@string/app_details"
android:parentActivityName=".views.main.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity" />
</activity>
<activity
android:name=".acra.CrashReportActivity"
android:excludeFromRecents="true"
android:finishOnTaskLaunch="true"
android:launchMode="singleInstance"
android:process=":error_report" />
<activity android:name=".views.ScreenShotsActivity" />
<activity
android:name=".data.ObbUrlActivity"
android:theme="@android:style/Theme.NoDisplay" />
<activity
android:name=".installer.DefaultInstallerActivity"
android:theme="@style/AppThemeTransparent" />
<activity
android:name=".installer.ErrorDialogActivity"
android:theme="@style/AppThemeTransparent" />
<activity
android:name=".views.main.MainActivity"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<!-- App URLs --> <!-- App URLs -->
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="fdroid.app"/> <data android:scheme="fdroid.app" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="false"> <intent-filter android:autoVerify="false">
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"/> <data android:scheme="https" />
<data android:host="f-droid.org"/> <data android:host="f-droid.org" />
<data android:host="www.f-droid.org"/> <data android:host="www.f-droid.org" />
<data android:host="staging.f-droid.org"/> <data android:host="staging.f-droid.org" />
<data android:pathPrefix="/app/"/> <data android:pathPrefix="/app/" />
<data android:pathPrefix="/packages/"/> <data android:pathPrefix="/packages/" />
<data android:pathPrefix="/repository/browse"/> <data android:pathPrefix="/repository/browse" />
<!-- support localized URLs --> <!-- support localized URLs -->
<data android:pathPattern="/.*/packages/.*"/> <data android:pathPattern="/.*/packages/.*" />
<data android:pathPattern="/.*/packages/.*/"/> <data android:pathPattern="/.*/packages/.*/" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="false"> <intent-filter android:autoVerify="false">
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"/> <data android:scheme="http" />
<data android:host="f-droid.org"/> <data android:host="f-droid.org" />
<data android:host="www.f-droid.org"/> <data android:host="www.f-droid.org" />
<data android:host="staging.f-droid.org"/> <data android:host="staging.f-droid.org" />
<data android:pathPrefix="/app/"/> <data android:pathPrefix="/app/" />
<data android:pathPrefix="/packages/"/> <data android:pathPrefix="/packages/" />
<data android:pathPrefix="/repository/browse"/> <data android:pathPrefix="/repository/browse" />
<!-- support localized URLs --> <!-- support localized URLs -->
<data android:pathPattern="/.*/packages/.*"/> <data android:pathPattern="/.*/packages/.*" />
<data android:pathPattern="/.*/packages/.*/"/> <data android:pathPattern="/.*/packages/.*/" />
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="market" android:host="details"/> <data
android:host="details"
android:scheme="market" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="false"> <intent-filter android:autoVerify="false">
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"/> <data android:scheme="http" />
<data android:scheme="https"/> <data android:scheme="https" />
<data android:host="play.google.com"/> <!-- they don't do www. --> <data android:host="play.google.com" /> <!-- they don't do www. -->
<data android:path="/store/apps/details"/> <data android:path="/store/apps/details" />
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="amzn" android:host="apps" android:path="/android"/> <data
android:host="apps"
android:path="/android"
android:scheme="amzn" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="false"> <intent-filter android:autoVerify="false">
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"/> <data android:scheme="http" />
<data android:scheme="https"/> <data android:scheme="https" />
<data android:host="amazon.com"/> <data android:host="amazon.com" />
<data android:host="www.amazon.com"/> <data android:host="www.amazon.com" />
<data android:path="/gp/mas/dl/android"/> <data android:path="/gp/mas/dl/android" />
</intent-filter> </intent-filter>
<!-- Search URLs --> <!-- Search URLs -->
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="fdroid.search"/> <data android:scheme="fdroid.search" />
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="market" android:host="search"/> <data
android:host="search"
android:scheme="market" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="false"> <intent-filter android:autoVerify="false">
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"/> <data android:scheme="http" />
<data android:scheme="https"/> <data android:scheme="https" />
<data android:host="play.google.com"/> <!-- they don't do www. --> <data android:host="play.google.com" /> <!-- they don't do www. -->
<data android:path="/store/search"/> <data android:path="/store/search" />
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEARCH"/> <action android:name="android.intent.action.SEARCH" />
</intent-filter> </intent-filter>
<meta-data <intent-filter android:autoVerify="false">
android:name="android.app.searchable" <action android:name="android.intent.action.VIEW" />
android:resource="@xml/searchable"/>
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<!--
Android's scheme matcher is case-sensitive, so include
ALL CAPS versions to support ALL CAPS URLs in QR Codes.
QR Codes have a special ALL CAPS mode that uses a reduced
character set, making for more compact QR Codes.
-->
<data android:scheme="http" />
<data
android:scheme="HTTP"
tools:ignore="AppLinkUrlError" />
<data android:scheme="https" />
<data
android:scheme="HTTPS"
tools:ignore="AppLinkUrlError" />
<data android:host="*" />
<!--
The pattern matcher here is poorly implemented, in particular the * is
non-greedy, so you have to do stupid tricks to match patterns that have
repeat characters in them. http://stackoverflow.com/a/8599921/306864
-->
<data android:path="/fdroid/repo" />
<data android:pathPattern="/fdroid/repo/*" />
<data android:pathPattern="/.*/fdroid/repo" />
<data android:pathPattern="/.*/fdroid/repo/*" />
<data android:pathPattern="/.*/.*/fdroid/repo" />
<data android:pathPattern="/.*/.*/fdroid/repo/*" />
<data android:pathPattern="/.*/.*/.*/fdroid/repo" />
<data android:pathPattern="/.*/.*/.*/fdroid/repo/*" />
<data android:pathPattern="/.*/.*/.*/.*/fdroid/repo" />
<data android:pathPattern="/.*/.*/.*/.*/fdroid/repo/*" />
<data android:pathPattern="/.*/.*/.*/.*/.*/fdroid/repo" />
<data android:pathPattern="/.*/.*/.*/.*/.*/fdroid/repo/*" />
<data android:pathPattern="/.*/.*/.*/.*/.*/.*/fdroid/repo" />
<data android:pathPattern="/.*/.*/.*/.*/.*/.*/fdroid/repo/*" />
<data android:path="/fdroid/archive" />
<data android:pathPattern="/fdroid/archive/*" />
<data android:pathPattern="/.*/fdroid/archive" />
<data android:pathPattern="/.*/fdroid/archive/*" />
<data android:pathPattern="/.*/.*/fdroid/archive" />
<data android:pathPattern="/.*/.*/fdroid/archive/*" />
<data android:pathPattern="/.*/.*/.*/fdroid/archive" />
<data android:pathPattern="/.*/.*/.*/fdroid/archive/*" />
<data android:pathPattern="/.*/.*/.*/.*/fdroid/archive" />
<data android:pathPattern="/.*/.*/.*/.*/fdroid/archive/*" />
<!--
Some QR Code scanners don't respect custom schemes like fdroidrepo://,
so this is a workaround, since the local repo URL is all uppercase in
the QR Code for sending the local repo to another device.
-->
<data android:path="/FDROID/REPO" />
<data android:pathPattern="/.*/FDROID/REPO" />
<data android:pathPattern="/.*/.*/FDROID/REPO" />
<data android:pathPattern="/.*/.*/.*/FDROID/REPO" />
</intent-filter>
<!-- Repo URLs --> <!-- Repo URLs -->
@ -429,11 +364,11 @@
This filter supports HTTP and HTTPS schemes. There is an additional filter for This filter supports HTTP and HTTPS schemes. There is an additional filter for
fdroidrepo:// and fdroidrepos:// fdroidrepo:// and fdroidrepos://
--> -->
<intent-filter android:autoVerify="false"> <intent-filter>
<action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT" />
<!-- <!--
Android's scheme matcher is case-sensitive, so include Android's scheme matcher is case-sensitive, so include
@ -441,51 +376,14 @@
QR Codes have a special ALL CAPS mode that uses a reduced QR Codes have a special ALL CAPS mode that uses a reduced
character set, making for more compact QR Codes. character set, making for more compact QR Codes.
--> -->
<data android:scheme="http"/> <data android:scheme="fdroidrepo" />
<data android:scheme="HTTP" tools:ignore="AppLinkUrlError"/> <data
<data android:scheme="https"/> android:scheme="FDROIDREPO"
<data android:scheme="HTTPS" tools:ignore="AppLinkUrlError"/> tools:ignore="AppLinkUrlError" />
<data android:scheme="fdroidrepos" />
<data android:host="*"/> <data
android:scheme="FDROIDREPOS"
<!-- tools:ignore="AppLinkUrlError" />
The pattern matcher here is poorly implemented, in particular the * is
non-greedy, so you have to do stupid tricks to match patterns that have
repeat characters in them. http://stackoverflow.com/a/8599921/306864
-->
<data android:path="/fdroid/repo"/>
<data android:pathPattern="/fdroid/repo/*"/>
<data android:pathPattern="/.*/fdroid/repo"/>
<data android:pathPattern="/.*/fdroid/repo/*"/>
<data android:pathPattern="/.*/.*/fdroid/repo"/>
<data android:pathPattern="/.*/.*/fdroid/repo/*"/>
<data android:pathPattern="/.*/.*/.*/fdroid/repo"/>
<data android:pathPattern="/.*/.*/.*/fdroid/repo/*"/>
<data android:pathPattern="/.*/.*/.*/.*/fdroid/repo"/>
<data android:pathPattern="/.*/.*/.*/.*/fdroid/repo/*"/>
<data android:pathPattern="/.*/.*/.*/.*/.*/fdroid/repo"/>
<data android:pathPattern="/.*/.*/.*/.*/.*/fdroid/repo/*"/>
<data android:pathPattern="/.*/.*/.*/.*/.*/.*/fdroid/repo"/>
<data android:pathPattern="/.*/.*/.*/.*/.*/.*/fdroid/repo/*"/>
<data android:path="/fdroid/archive"/>
<data android:pathPattern="/fdroid/archive/*"/>
<data android:pathPattern="/.*/fdroid/archive"/>
<data android:pathPattern="/.*/fdroid/archive/*"/>
<data android:pathPattern="/.*/.*/fdroid/archive"/>
<data android:pathPattern="/.*/.*/fdroid/archive/*"/>
<data android:pathPattern="/.*/.*/.*/fdroid/archive"/>
<data android:pathPattern="/.*/.*/.*/fdroid/archive/*"/>
<data android:pathPattern="/.*/.*/.*/.*/fdroid/archive"/>
<data android:pathPattern="/.*/.*/.*/.*/fdroid/archive/*"/>
<!--
Some QR Code scanners don't respect custom schemes like fdroidrepo://,
so this is a workaround, since the local repo URL is all uppercase in
the QR Code for sending the local repo to another device.
-->
<data android:path="/FDROID/REPO"/>
<data android:pathPattern="/.*/FDROID/REPO"/>
<data android:pathPattern="/.*/.*/FDROID/REPO"/>
<data android:pathPattern="/.*/.*/.*/FDROID/REPO"/>
</intent-filter> </intent-filter>
<!-- <!--
@ -493,58 +391,186 @@
looks for fdroidrepos://* and doesn't care what the path is. looks for fdroidrepos://* and doesn't care what the path is.
--> -->
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW"/> <action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.DEFAULT"/>
<!--
Android's scheme matcher is case-sensitive, so include
ALL CAPS versions to support ALL CAPS URLs in QR Codes.
QR Codes have a special ALL CAPS mode that uses a reduced
character set, making for more compact QR Codes.
-->
<data android:scheme="fdroidrepo"/>
<data android:scheme="FDROIDREPO" tools:ignore="AppLinkUrlError"/>
<data android:scheme="fdroidrepos"/>
<data android:scheme="FDROIDREPOS" tools:ignore="AppLinkUrlError"/>
</intent-filter>
<!-- Handle NFC tags detected from outside our application -->
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<!-- <!--
URIs that come in via NFC have scheme/host normalized to all lower case URIs that come in via NFC have scheme/host normalized to all lower case
https://developer.android.com/reference/android/nfc/NfcAdapter.html#ACTION_NDEF_DISCOVERED https://developer.android.com/reference/android/nfc/NfcAdapter.html#ACTION_NDEF_DISCOVERED
--> -->
<data android:scheme="fdroidrepo"/> <data android:scheme="fdroidrepo" />
<data android:scheme="fdroidrepos"/> <data android:scheme="fdroidrepos" />
</intent-filter> </intent-filter>
</activity>
<activity android:name=".views.apps.AppListActivity"/> <!-- Handle NFC tags detected from outside our application -->
<activity android:name=".views.installed.InstalledAppsActivity"
android:parentActivityName=".views.main.MainActivity">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.app.searchable"
android:value=".views.main.MainActivity"/> android:resource="@xml/searchable" />
</activity>
<activity android:name=".views.InstallHistoryActivity"
android:parentActivityName=".views.main.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity"/>
</activity>
</activity>
<activity android:name=".views.apps.AppListActivity" />
<activity
android:name=".views.installed.InstalledAppsActivity"
android:parentActivityName=".views.main.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity" />
</activity>
<activity
android:name=".views.InstallHistoryActivity"
android:parentActivityName=".views.main.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.main.MainActivity" />
</activity>
<activity android:name=".AboutActivity" /> <activity android:name=".AboutActivity" />
<activity android:name=".installer.FileInstallerActivity" android:theme="@style/AppThemeTransparent"/>
<activity
android:name=".installer.FileInstallerActivity"
android:theme="@style/AppThemeTransparent" />
<provider
android:name="org.fdroid.fdroid.data.AppProvider"
android:authorities="${applicationId}.data.AppProvider"
android:exported="false" />
<provider
android:name="org.fdroid.fdroid.data.RepoProvider"
android:authorities="${applicationId}.data.RepoProvider"
android:exported="false" />
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
<provider
android:name="org.fdroid.fdroid.data.ApkProvider"
android:authorities="${applicationId}.data.ApkProvider"
android:exported="false" />
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
<provider
android:name="org.fdroid.fdroid.data.TempApkProvider"
android:authorities="${applicationId}.data.TempApkProvider"
android:exported="false" />
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
<provider
android:name="org.fdroid.fdroid.data.TempAppProvider"
android:authorities="${applicationId}.data.TempAppProvider"
android:exported="false" />
<provider
android:name="org.fdroid.fdroid.data.InstalledAppProvider"
android:authorities="${applicationId}.data.InstalledAppProvider"
android:exported="false" />
<provider
android:name="org.fdroid.fdroid.data.AppPrefsProvider"
android:authorities="${applicationId}.data.AppPrefsProvider"
android:exported="false" />
<provider
android:name="org.fdroid.fdroid.data.PackageIdProvider"
android:authorities="${applicationId}.data.PackageIdProvider"
android:exported="false" />
<provider
android:name="org.fdroid.fdroid.data.CategoryProvider"
android:authorities="${applicationId}.data.CategoryProvider"
android:exported="false" />
<provider
android:name="org.fdroid.fdroid.installer.ApkFileProvider"
android:authorities="${applicationId}.installer.ApkFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/apk_file_provider" />
</provider>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.installer"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/installer_file_provider" />
</provider>
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
android:exported="false"
tools:node="remove" />
<receiver android:name=".receiver.StartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
<receiver android:name=".receiver.PackageManagerReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<receiver
android:name=".NotificationBroadcastReceiver"
android:exported="false">
<!-- Doesn't require an intent-filter because it is explicitly invoked via Intent.setClass() -->
</receiver>
<receiver android:name=".receiver.DeviceStorageReceiver">
<intent-filter>
<action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
</intent-filter>
</receiver>
<service
android:name=".UpdateService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".UpdateJobService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".net.DownloaderService"
android:exported="false" />
<service
android:name=".installer.InstallerService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".DeleteCacheService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".net.ConnectivityMonitorService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".installer.InstallManagerService"
android:exported="false" />
<service
android:name=".installer.InstallHistoryService"
android:exported="false" />
<service
android:name=".installer.ObfInstallerService"
android:exported="false" />
<service
android:name=".data.InstalledAppProviderService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".AddRepoIntentService"
android:exported="false" />
</application> </application>