2010-10-19 23:24:04 +01:00
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
2021-04-22 10:29:55 +02:00
|
|
|
|
2018-05-30 14:44:09 +02:00
|
|
|
<!--
|
|
|
|
* Copyright (C) 2010-2012 Ciaran Gultnieks
|
|
|
|
* Copyright (C) 2013-2017 Peter Serwylo
|
|
|
|
* Copyright (C) 2014-2015 Daniel Martí
|
|
|
|
* Copyright (C) 2014-2018 Hans-Christoph Steiner
|
|
|
|
* Copyright (C) 2016 Dominik Schürmann
|
|
|
|
* Copyright (C) 2018 Torsten Grote
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 3
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* 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, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
-->
|
2010-10-19 23:24:04 +01:00
|
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
2021-04-22 10:29:55 +02:00
|
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
|
|
package="org.fdroid.fdroid"
|
|
|
|
android:installLocation="auto">
|
2012-09-17 21:46:32 +01:00
|
|
|
|
|
|
|
<supports-screens
|
2021-04-22 10:29:55 +02:00
|
|
|
android:anyDensity="true"
|
|
|
|
android:largeScreens="true"
|
|
|
|
android:normalScreens="true"
|
|
|
|
android:resizeable="true"
|
|
|
|
android:smallScreens="true"
|
|
|
|
android:xlargeScreens="true" />
|
2012-09-17 21:46:32 +01:00
|
|
|
|
2014-02-14 20:46:12 -05:00
|
|
|
<uses-feature
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.hardware.telephony"
|
|
|
|
android:required="false" />
|
2015-01-03 18:13:35 +01:00
|
|
|
<uses-feature
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.hardware.wifi"
|
|
|
|
android:required="false" />
|
|
|
|
|
2012-09-17 21:46:32 +01:00
|
|
|
<uses-feature
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.hardware.touchscreen"
|
|
|
|
android:required="false" />
|
2018-02-08 17:39:42 +01:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<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.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" />
|
2014-12-31 01:00:31 +01:00
|
|
|
|
2012-09-17 21:46:32 +01:00
|
|
|
<application
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".FDroidApp"
|
|
|
|
android:allowBackup="true"
|
|
|
|
android:description="@string/app_description"
|
|
|
|
android:fullBackupContent="@xml/backup_rules"
|
|
|
|
android:icon="@drawable/ic_launcher"
|
|
|
|
android:label="@string/app_name"
|
|
|
|
android:networkSecurityConfig="@xml/network_security_config"
|
|
|
|
android:supportsRtl="true"
|
|
|
|
android:theme="@style/Theme.App">
|
2016-06-08 15:46:04 +02:00
|
|
|
|
2015-05-10 22:43:05 +02:00
|
|
|
<activity
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".privileged.views.InstallConfirmActivity"
|
|
|
|
android:configChanges="layoutDirection|locale"
|
|
|
|
android:excludeFromRecents="true"
|
|
|
|
android:label="@string/menu_install"
|
|
|
|
android:parentActivityName=".views.main.MainActivity">
|
2015-05-10 22:43:05 +02:00
|
|
|
<meta-data
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
|
|
android:value=".views.main.MainActivity" />
|
2015-05-10 22:43:05 +02:00
|
|
|
</activity>
|
2021-04-22 10:29:55 +02:00
|
|
|
|
2016-05-29 23:34:00 +03:00
|
|
|
<activity
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".privileged.views.UninstallDialogActivity"
|
|
|
|
android:excludeFromRecents="true" />
|
|
|
|
|
Implemented client connection for swap.
Listen for a new intent, show a screen to the user mentioning
they are about to start a swap. Make FDroid receive repo intents,
then dispatch to relevant Activity.
Previously manage repo always got the intents. Now FDroid does, and
chooses whether to give to ManageRepos or Client connect.
Not sure if it is required to do it this way or not, but it seems to
work.
I had a bit of an issue getting the "Welcome to F-Droid" string to
fit on one line, because it was breaking on the hyphen. That is still
not resolved in this commit.
Still need to:
* Show error messages instead of the "connect" description
* Jar signing seems not to work when connecting to other repo.
In order to handle returning to F-Droid after connecting (or saying no)
I tagged the intent with a "handled" extra value. That way, I can ignore
trying to connect to a repo if we've already handled that event.
Finally, I also fixed an issue regarding downloading of signed
index.jar files with an uppercase fingerprint.
The fingerprint from the jar differed from that in the swap url,
in that one was upper case and the other was lower case.
This uses an .equalsIgnoreCase check instead. It also adds an
extra guard in case the repo doesn't have a fingerprint. Although
it may not even use the signed repo updater if both the pubkey
and fingerprint are null, it is nice to have the extra assurance.
Fixes issue #19.
I also left some more TODO's around. I should put them in issues,
but I'm in a bit of a hurry.
2014-07-05 07:49:37 +09:30
|
|
|
<activity
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".views.ManageReposActivity"
|
|
|
|
android:configChanges="layoutDirection|locale"
|
|
|
|
android:label="@string/menu_manage"
|
|
|
|
android:launchMode="singleTask"
|
|
|
|
android:parentActivityName=".views.main.MainActivity">
|
Implemented client connection for swap.
Listen for a new intent, show a screen to the user mentioning
they are about to start a swap. Make FDroid receive repo intents,
then dispatch to relevant Activity.
Previously manage repo always got the intents. Now FDroid does, and
chooses whether to give to ManageRepos or Client connect.
Not sure if it is required to do it this way or not, but it seems to
work.
I had a bit of an issue getting the "Welcome to F-Droid" string to
fit on one line, because it was breaking on the hyphen. That is still
not resolved in this commit.
Still need to:
* Show error messages instead of the "connect" description
* Jar signing seems not to work when connecting to other repo.
In order to handle returning to F-Droid after connecting (or saying no)
I tagged the intent with a "handled" extra value. That way, I can ignore
trying to connect to a repo if we've already handled that event.
Finally, I also fixed an issue regarding downloading of signed
index.jar files with an uppercase fingerprint.
The fingerprint from the jar differed from that in the swap url,
in that one was upper case and the other was lower case.
This uses an .equalsIgnoreCase check instead. It also adds an
extra guard in case the repo doesn't have a fingerprint. Although
it may not even use the signed repo updater if both the pubkey
and fingerprint are null, it is nice to have the extra assurance.
Fixes issue #19.
I also left some more TODO's around. I should put them in issues,
but I'm in a bit of a hurry.
2014-07-05 07:49:37 +09:30
|
|
|
<meta-data
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
|
|
android:value=".views.main.MainActivity" />
|
2014-01-31 21:49:13 -05:00
|
|
|
</activity>
|
2021-04-22 10:29:55 +02:00
|
|
|
|
2014-01-31 21:49:13 -05:00
|
|
|
<activity
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".NfcNotEnabledActivity"
|
|
|
|
android:configChanges="layoutDirection|locale"
|
|
|
|
android:noHistory="true" />
|
|
|
|
|
2013-04-13 10:06:55 +10:00
|
|
|
<activity
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".views.RepoDetailsActivity"
|
|
|
|
android:configChanges="layoutDirection|locale"
|
|
|
|
android:label="@string/repo_details"
|
|
|
|
android:parentActivityName=".views.ManageReposActivity"
|
|
|
|
android:windowSoftInputMode="stateHidden">
|
Migrating activities to appcompat-v7
The only remaining activity is the AppDetails acvitity, which will require
a little more than just making it extend ActionBarActivity. Currently,
it extends ListActivity. To support appcompat-v7, it really should have
two fragments - the details one and the list one. Then, when the orientation
is changed, it should load a different layout with the fragments side by side.
Although Google is encouraging people to make old devices run apps
with the action bar (via appcompat-v7), they haven't provided a way
for people to create preference/setting screens with an action bar.
There are plenty of issues in the Android issue tracker relating
to this, but it doesn't yet seem to be on the radar of the Android
devs.
Until there is a native implementation of PreferenceFragment in
the appcompat-v7 support library, this submodule provides is a 3rd
party solution. It is actually a fork of the first repo in github,
though that was a bit of an upload and dump, without accepting MR's.
This fork includes gradle support.
2014-06-03 08:19:26 +09:30
|
|
|
<meta-data
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
|
|
android:value=".views.ManageReposActivity" />
|
Migrating activities to appcompat-v7
The only remaining activity is the AppDetails acvitity, which will require
a little more than just making it extend ActionBarActivity. Currently,
it extends ListActivity. To support appcompat-v7, it really should have
two fragments - the details one and the list one. Then, when the orientation
is changed, it should load a different layout with the fragments side by side.
Although Google is encouraging people to make old devices run apps
with the action bar (via appcompat-v7), they haven't provided a way
for people to create preference/setting screens with an action bar.
There are plenty of issues in the Android issue tracker relating
to this, but it doesn't yet seem to be on the radar of the Android
devs.
Until there is a native implementation of PreferenceFragment in
the appcompat-v7 support library, this submodule provides is a 3rd
party solution. It is actually a fork of the first repo in github,
though that was a bit of an upload and dump, without accepting MR's.
This fork includes gradle support.
2014-06-03 08:19:26 +09:30
|
|
|
</activity>
|
2014-01-31 21:49:13 -05:00
|
|
|
|
2016-11-10 12:44:18 +01:00
|
|
|
<activity
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".views.AppDetailsActivity"
|
|
|
|
android:configChanges="layoutDirection|locale"
|
|
|
|
android:exported="true"
|
|
|
|
android:label="@string/app_details"
|
|
|
|
android:parentActivityName=".views.main.MainActivity">
|
2016-11-10 12:44:18 +01:00
|
|
|
<meta-data
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
|
|
android:value=".views.main.MainActivity" />
|
2016-11-10 12:44:18 +01:00
|
|
|
</activity>
|
2012-09-17 21:46:32 +01:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<activity
|
|
|
|
android:name=".acra.CrashReportActivity"
|
|
|
|
android:excludeFromRecents="true"
|
|
|
|
android:finishOnTaskLaunch="true"
|
|
|
|
android:launchMode="singleInstance"
|
|
|
|
android:process=":error_report" />
|
2017-04-20 14:02:01 +10:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<activity android:name=".views.ScreenShotsActivity" />
|
2018-04-05 23:09:40 +02:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<activity
|
|
|
|
android:name=".data.ObbUrlActivity"
|
|
|
|
android:theme="@android:style/Theme.NoDisplay" />
|
2017-02-21 11:34:07 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<activity
|
|
|
|
android:name=".installer.DefaultInstallerActivity"
|
|
|
|
android:theme="@style/AppThemeTransparent" />
|
|
|
|
<activity
|
|
|
|
android:name=".installer.ErrorDialogActivity"
|
|
|
|
android:theme="@style/AppThemeTransparent" />
|
2018-01-15 16:54:35 -02:00
|
|
|
|
2017-03-15 08:37:51 +11:00
|
|
|
<activity
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name=".views.main.MainActivity"
|
|
|
|
android:launchMode="singleTop"
|
|
|
|
android:windowSoftInputMode="adjustResize">
|
2017-02-21 11:34:07 +11:00
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.MAIN" />
|
2017-02-21 11:34:07 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
2017-02-21 11:34:07 +11:00
|
|
|
</intent-filter>
|
2017-02-21 11:26:54 +11:00
|
|
|
|
|
|
|
|
|
|
|
<!-- App URLs -->
|
|
|
|
|
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="fdroid.app" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
2020-06-25 12:49:55 +02:00
|
|
|
<intent-filter android:autoVerify="false">
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
|
|
|
|
<data android:scheme="https" />
|
|
|
|
<data android:host="f-droid.org" />
|
|
|
|
<data android:host="www.f-droid.org" />
|
|
|
|
<data android:host="staging.f-droid.org" />
|
|
|
|
<data android:pathPrefix="/app/" />
|
|
|
|
<data android:pathPrefix="/packages/" />
|
|
|
|
<data android:pathPrefix="/repository/browse" />
|
2017-12-21 10:08:27 +01:00
|
|
|
<!-- support localized URLs -->
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:pathPattern="/.*/packages/.*" />
|
|
|
|
<data android:pathPattern="/.*/packages/.*/" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
2020-06-25 12:49:55 +02:00
|
|
|
<intent-filter android:autoVerify="false">
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
|
|
|
|
<data android:scheme="http" />
|
|
|
|
<data android:host="f-droid.org" />
|
|
|
|
<data android:host="www.f-droid.org" />
|
|
|
|
<data android:host="staging.f-droid.org" />
|
|
|
|
<data android:pathPrefix="/app/" />
|
|
|
|
<data android:pathPrefix="/packages/" />
|
|
|
|
<data android:pathPrefix="/repository/browse" />
|
2018-04-25 21:38:23 +02:00
|
|
|
<!-- support localized URLs -->
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:pathPattern="/.*/packages/.*" />
|
|
|
|
<data android:pathPattern="/.*/packages/.*/" />
|
2018-04-25 21:38:23 +02:00
|
|
|
</intent-filter>
|
|
|
|
|
2017-02-21 11:26:54 +11:00
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data
|
|
|
|
android:host="details"
|
|
|
|
android:scheme="market" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
2020-06-25 12:49:55 +02:00
|
|
|
<intent-filter android:autoVerify="false">
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="http" />
|
|
|
|
<data android:scheme="https" />
|
|
|
|
<data android:host="play.google.com" /> <!-- they don't do www. -->
|
|
|
|
<data android:path="/store/apps/details" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data
|
|
|
|
android:host="apps"
|
|
|
|
android:path="/android"
|
|
|
|
android:scheme="amzn" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
2020-06-25 12:49:55 +02:00
|
|
|
<intent-filter android:autoVerify="false">
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="http" />
|
|
|
|
<data android:scheme="https" />
|
|
|
|
<data android:host="amazon.com" />
|
|
|
|
<data android:host="www.amazon.com" />
|
|
|
|
<data android:path="/gp/mas/dl/android" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Search URLs -->
|
|
|
|
|
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="fdroid.search" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data
|
|
|
|
android:host="search"
|
|
|
|
android:scheme="market" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
2020-06-25 12:49:55 +02:00
|
|
|
<intent-filter android:autoVerify="false">
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2017-02-21 11:26:54 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="http" />
|
|
|
|
<data android:scheme="https" />
|
|
|
|
<data android:host="play.google.com" /> <!-- they don't do www. -->
|
|
|
|
<data android:path="/store/search" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.SEARCH" />
|
2017-02-21 11:26:54 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
2020-06-25 12:49:55 +02:00
|
|
|
<intent-filter android:autoVerify="false">
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-02-13 14:56:03 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
2017-02-13 14:56:03 +11:00
|
|
|
|
|
|
|
<!--
|
|
|
|
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.
|
|
|
|
-->
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="http" />
|
|
|
|
<data
|
|
|
|
android:scheme="HTTP"
|
|
|
|
tools:ignore="AppLinkUrlError" />
|
|
|
|
<data android:scheme="https" />
|
|
|
|
<data
|
|
|
|
android:scheme="HTTPS"
|
|
|
|
tools:ignore="AppLinkUrlError" />
|
2017-02-13 14:56:03 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:host="*" />
|
2017-02-13 14:56:03 +11:00
|
|
|
|
|
|
|
<!--
|
|
|
|
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
|
|
|
|
-->
|
2021-04-22 10:29:55 +02:00
|
|
|
<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/*" />
|
2017-02-13 14:56:03 +11:00
|
|
|
<!--
|
|
|
|
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.
|
|
|
|
-->
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:path="/FDROID/REPO" />
|
|
|
|
<data android:pathPattern="/.*/FDROID/REPO" />
|
|
|
|
<data android:pathPattern="/.*/.*/FDROID/REPO" />
|
|
|
|
<data android:pathPattern="/.*/.*/.*/FDROID/REPO" />
|
2017-02-13 14:56:03 +11:00
|
|
|
</intent-filter>
|
2017-02-13 15:07:06 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
|
|
|
|
<!-- Repo URLs -->
|
|
|
|
|
2017-09-25 15:22:00 +10:00
|
|
|
<!--
|
2021-04-22 10:29:55 +02:00
|
|
|
This intent serves two purposes: Swapping apps between devices and adding a
|
|
|
|
repo from a website (e.g. https://guardianproject.info/fdroid/repo).
|
|
|
|
We intercept both of these situations in the FDroid activity, and then redirect
|
|
|
|
to the appropriate handler (swap handling, manage repos respectively) from there.
|
|
|
|
|
|
|
|
The reason for this is that the only differentiating factor is the presence
|
|
|
|
of a "swap=1" in the query string, and intent-filter is unable to deal with
|
|
|
|
query parameters. An alternative would be to do something like fdroidswap:// as
|
|
|
|
a scheme, but then we need to copy/paste all of this intent-filter stuff and
|
|
|
|
keep it up to date when it changes or a bug is found.
|
|
|
|
|
|
|
|
This filter supports HTTP and HTTPS schemes. There is an additional filter for
|
|
|
|
fdroidrepo:// and fdroidrepos://
|
2017-09-25 15:22:00 +10:00
|
|
|
-->
|
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
2017-09-25 15:22:00 +10:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
2017-09-25 15:22:00 +10:00
|
|
|
|
|
|
|
<!--
|
|
|
|
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.
|
|
|
|
-->
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="fdroidrepo" />
|
|
|
|
<data
|
|
|
|
android:scheme="FDROIDREPO"
|
|
|
|
tools:ignore="AppLinkUrlError" />
|
|
|
|
<data android:scheme="fdroidrepos" />
|
|
|
|
<data
|
|
|
|
android:scheme="FDROIDREPOS"
|
|
|
|
tools:ignore="AppLinkUrlError" />
|
2017-09-25 15:22:00 +10:00
|
|
|
</intent-filter>
|
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<!--
|
|
|
|
Same as the intent filter listening for repositories via https://*/fdroid/repo, except this
|
|
|
|
looks for fdroidrepos://* and doesn't care what the path is.
|
|
|
|
-->
|
2017-02-13 15:07:06 +11:00
|
|
|
<intent-filter>
|
2021-04-22 10:29:55 +02:00
|
|
|
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
|
2017-02-13 15:07:06 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
2017-02-13 15:07:06 +11:00
|
|
|
|
|
|
|
<!--
|
|
|
|
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
|
|
|
|
-->
|
2021-04-22 10:29:55 +02:00
|
|
|
<data android:scheme="fdroidrepo" />
|
|
|
|
<data android:scheme="fdroidrepos" />
|
2017-02-13 15:07:06 +11:00
|
|
|
</intent-filter>
|
|
|
|
|
2017-02-21 11:34:07 +11:00
|
|
|
|
2021-04-22 10:29:55 +02:00
|
|
|
<!-- Handle NFC tags detected from outside our application -->
|
2016-11-24 11:50:28 +11:00
|
|
|
|
2017-02-14 09:07:00 +11:00
|
|
|
<meta-data
|
2021-04-22 10:29:55 +02:00
|
|
|
android:name="android.app.searchable"
|
|
|
|
android:resource="@xml/searchable" />
|
|
|
|
|
2017-02-14 09:07:00 +11:00
|
|
|
</activity>
|
2021-04-22 10:29:55 +02:00
|
|
|
<activity android:name=".views.apps.AppListActivity" />
|
|
|
|
<activity
|
|
|
|
android:name=".views.installed.InstalledAppsActivity"
|
|
|
|
android:parentActivityName=".views.main.MainActivity">
|
2018-06-25 23:18:01 +02:00
|
|
|
<meta-data
|
2021-04-22 10:29:55 +02:00
|
|
|
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" />
|
2018-06-25 23:18:01 +02:00
|
|
|
</activity>
|
2021-04-12 16:36:17 +00:00
|
|
|
<activity android:name=".AboutActivity" />
|
2021-04-22 10:29:55 +02:00
|
|
|
|
|
|
|
<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" />
|
2017-03-29 16:22:05 +11:00
|
|
|
|
2012-09-17 21:46:32 +01:00
|
|
|
</application>
|
|
|
|
|
2012-10-19 20:37:36 +01:00
|
|
|
</manifest>
|