diff options
| author | Adam Soltys <[email protected]> | 2026-10-04 23:02:15 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-10-04 23:02:15 -0700 |
| commit | e1bc34923bed8fd00c5a3cdacdfb7f102c87d7a3 (patch) | |
| tree | 93ba587663ff503c84b96b077676086159d2f9ce /android/app/src/main | |
| parent | bd935e0cab30461dc4c8702ad54704b6e3d90726 (diff) | |
| download | coinosv3-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')
| -rw-r--r-- | android/app/src/main/AndroidManifest.xml | 84 |
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. --> |
