mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-10-22 07:18:22 +02:00
109 lines
5.2 KiB
XML
109 lines
5.2 KiB
XML
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||
|
||
<!-- Internet permission for map tiles and API calls -->
|
||
<uses-permission android:name="android.permission.INTERNET"/>
|
||
|
||
<!-- Location permissions for blue‑dot positioning -->
|
||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||
|
||
<!-- Notification permission for proximity alerts -->
|
||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||
|
||
<!-- Background location for proximity alerts. Android stops delivering
|
||
location to a backgrounded app within a few minutes unless it is
|
||
running a foreground service, so geolocator is given a
|
||
ForegroundNotificationConfig while proximity alerts are enabled -
|
||
that starts its GeolocatorLocationService (already declared by the
|
||
geolocator_android plugin manifest) and keeps the stream alive.
|
||
FOREGROUND_SERVICE_LOCATION is required from Android 14 onward.
|
||
|
||
Deliberately NOT declaring ACCESS_BACKGROUND_LOCATION: the foreground
|
||
service covers our case without it, and merely listing it in the
|
||
manifest makes geolocator append it to the very first permission
|
||
request - which Android 11+ silently denies, because foreground and
|
||
background location cannot be asked for in one prompt. That would
|
||
degrade first-run permissions for every user, including those who
|
||
never turn proximity alerts on. It also drags in the Play Store
|
||
background-location declaration review. -->
|
||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
|
||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||
|
||
<application
|
||
android:name="${applicationName}"
|
||
android:label="DeFlock"
|
||
android:icon="@mipmap/ic_launcher"
|
||
android:enableOnBackInvokedCallback="true">
|
||
<!-- Main Flutter activity -->
|
||
<activity
|
||
android:name=".MainActivity"
|
||
android:exported="true"
|
||
android:launchMode="singleTop"
|
||
android:hardwareAccelerated="true"
|
||
android:theme="@style/LaunchTheme"
|
||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||
android:windowSoftInputMode="adjustNothing">
|
||
|
||
<!-- The theme behind the splash while Flutter initializes -->
|
||
<meta-data
|
||
android:name="io.flutter.embedding.android.NormalTheme"
|
||
android:resource="@style/NormalTheme" />
|
||
|
||
<!-- Disable Flutter's implicit deep-link routing so that
|
||
app_links/DeepLinkService is the sole handler of incoming
|
||
deflockapp:// URIs. Without this, Flutter's engine also
|
||
tries to auto-convert the URI into a Navigator route
|
||
(e.g. "/add?p=...") which conflicts with the navigation
|
||
DeepLinkService performs, causing screens pushed by
|
||
DeepLinkService to be immediately buried by a duplicate
|
||
HomeScreen route. -->
|
||
<meta-data
|
||
android:name="flutter_deeplinking_enabled"
|
||
android:value="false" />
|
||
|
||
|
||
<!-- Launcher intent -->
|
||
<intent-filter>
|
||
<action android:name="android.intent.action.MAIN"/>
|
||
<category android:name="android.intent.category.LAUNCHER"/>
|
||
</intent-filter>
|
||
|
||
<!-- Profile import deep links -->
|
||
<intent-filter android:autoVerify="true">
|
||
<action android:name="android.intent.action.VIEW"/>
|
||
<category android:name="android.intent.category.DEFAULT"/>
|
||
<category android:name="android.intent.category.BROWSABLE"/>
|
||
<data android:scheme="deflockapp" android:host="profiles"/>
|
||
<data android:scheme="deflockapp" android:host="node"/>
|
||
</intent-filter>
|
||
</activity>
|
||
|
||
<!-- flutter_web_auth_2 callback activity (V2 embedding) -->
|
||
<activity
|
||
android:name="com.linusu.flutter_web_auth_2.CallbackActivity"
|
||
android:exported="true"
|
||
android:launchMode="singleTask">
|
||
<intent-filter android:label="flutter_web_auth_2">
|
||
<action android:name="android.intent.action.VIEW"/>
|
||
<category android:name="android.intent.category.DEFAULT"/>
|
||
<category android:name="android.intent.category.BROWSABLE"/>
|
||
<data android:scheme="deflockapp" android:host="auth"/>
|
||
</intent-filter>
|
||
</activity>
|
||
|
||
<!-- Flutter plugin registration flag -->
|
||
<meta-data
|
||
android:name="flutterEmbedding"
|
||
android:value="2" />
|
||
</application>
|
||
|
||
<!-- Required so ProcessTextPlugin can query other apps -->
|
||
<queries>
|
||
<intent>
|
||
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
||
<data android:mimeType="text/plain"/>
|
||
</intent>
|
||
</queries>
|
||
</manifest>
|