aboutsummaryrefslogtreecommitdiffstats
path: root/android/app/src/main/AndroidManifest.xml
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-04 23:02:15 -0700
committerAdam Soltys <[email protected]>2026-10-04 23:02:15 -0700
commite1bc34923bed8fd00c5a3cdacdfb7f102c87d7a3 (patch)
tree93ba587663ff503c84b96b077676086159d2f9ce /android/app/src/main/AndroidManifest.xml
parentbd935e0cab30461dc4c8702ad54704b6e3d90726 (diff)
downloadcoinosv3-e1bc34923bed8fd00c5a3cdacdfb7f102c87d7a3.tar.gz
coinosv3-e1bc34923bed8fd00c5a3cdacdfb7f102c87d7a3.zip
Android: TWA activities only in the TWA build, push wakes run the bundled app, the origin fails closed; 1.9 (code 10).fdroid-v1.9
F-Droid review of 1.8: the shared manifest declared the TWA's LauncherActivity/IntentActivity in the webview and fdroid builds, which don't compile them (a second, crashing launcher icon). They move to src/twa/AndroidManifest.xml. WakeJob's off-screen WebView now answers the origin from assets like MainActivity's, and Assets returns 404 for any v3.coinos.io path it doesn't carry outside the live API list instead of fetching it. POST_NOTIFICATIONS is asked only when a UnifiedPush distributor is installed. The description names the third-party hosts (DoH, post media). Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'android/app/src/main/AndroidManifest.xml')
-rw-r--r--android/app/src/main/AndroidManifest.xml84
1 files changed, 4 insertions, 80 deletions
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index b0dddbd..0444b76 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- TWA wrapper: full-screen Chrome running https://v3.coinos.io (needs the
- site's /.well-known/assetlinks.json to name this app's signing cert, or
- Android shows a URL bar). The point of the wrapper is the intent
- filters: lightning:/bitcoin:/nostr:/lnurl: URIs open this app, and
- LauncherActivity forwards them into the web app as ?u=<encoded>. -->
+<!-- What every build shares: notifications and the UnifiedPush receiver.
+ Each flavor's own manifest adds its activities — the TWA's live in
+ src/twa, the WebView's (webview and fdroid) in src/webview — so no build
+ declares an activity whose class it doesn't compile. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- NFC is a way in (bolt cards, NDEF tags), never a requirement -->
<uses-feature android:name="android.hardware.nfc" android:required="false" />
@@ -20,81 +19,6 @@
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:supportsRtl="true">
- <meta-data
- android:name="asset_statements"
- android:resource="@string/asset_statements" />
- <activity
- android:name="io.coinos.app.LauncherActivity"
- android:exported="true"
- android:theme="@android:style/Theme.Translucent.NoTitleBar">
- <meta-data
- android:name="android.support.customtabs.trusted.DEFAULT_URL"
- android:value="https://v3.coinos.io/" />
- <!-- System-bar colors: without these the TWA status bar defaults to
- white. Light follows the page background, dark the PWA's
- theme_color, so the bar icons keep their contrast either way. -->
- <meta-data
- android:name="android.support.customtabs.trusted.STATUS_BAR_COLOR"
- android:resource="@color/statusBarColor" />
- <meta-data
- android:name="android.support.customtabs.trusted.STATUS_BAR_COLOR_DARK"
- android:resource="@color/statusBarColorDark" />
- <meta-data
- android:name="android.support.customtabs.trusted.NAVIGATION_BAR_COLOR"
- android:resource="@color/navigationBarColor" />
- <meta-data
- android:name="android.support.customtabs.trusted.NAVIGATION_BAR_COLOR_DARK"
- android:resource="@color/navigationBarColorDark" />
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <!-- own the site's links (verified against assetlinks.json) -->
- <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="https" android:host="v3.coinos.io" />
- </intent-filter>
- </activity>
- <!-- Scheme + NFC intents land on this per-intent trampoline, not the
- launcher: a TWA already on screen ignores a new intent to its
- launcher, so a second lightning: tap used to do nothing. The
- trampoline relaunches the TWA with the new URL and finishes.
- lnurlw/lnurlp ride along — bolt cards and LNURL NFC tags emit
- those schemes; NDEF dispatch needs no NFC permission. -->
- <activity
- android:name="io.coinos.app.IntentActivity"
- android:exported="true"
- android:noHistory="true"
- android:theme="@android:style/Theme.Translucent.NoTitleBar">
- <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="lightning" />
- <data android:scheme="bitcoin" />
- <data android:scheme="nostr" />
- <data android:scheme="lnurl" />
- <data android:scheme="lnurlw" />
- <data android:scheme="lnurlp" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.nfc.action.NDEF_DISCOVERED" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="lightning" />
- <data android:scheme="bitcoin" />
- <data android:scheme="nostr" />
- <data android:scheme="lnurl" />
- <data android:scheme="lnurlw" />
- <data android:scheme="lnurlp" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.nfc.action.NDEF_DISCOVERED" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="https" android:host="v3.coinos.io" />
- </intent-filter>
- </activity>
<!-- UnifiedPush: the distributor broadcasts here. Web push needs Google
Play Services on Android, so on a de-Googled phone this is the only
way the wallet can be reached at all while it isn't open. -->