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/twa/AndroidManifest.xml | |
| parent | bd935e0cab30461dc4c8702ad54704b6e3d90726 (diff) | |
| download | coinosv3-fdroid-v1.9.tar.gz coinosv3-fdroid-v1.9.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/twa/AndroidManifest.xml')
| -rw-r--r-- | android/app/src/twa/AndroidManifest.xml | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/android/app/src/twa/AndroidManifest.xml b/android/app/src/twa/AndroidManifest.xml new file mode 100644 index 0000000..c430cdf --- /dev/null +++ b/android/app/src/twa/AndroidManifest.xml @@ -0,0 +1,85 @@ +<?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>. --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> + <application> + <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> + </application> +</manifest> |
