From b83110a8dccb9615ff56787e4358323151ffc453 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 9 Mar 2026 08:30:41 -0700 Subject: use JavascriptInterface for HCE instead of Capacitor plugin --- .../app/src/main/java/io/coinos/MainActivity.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'android') diff --git a/android/app/src/main/java/io/coinos/MainActivity.java b/android/app/src/main/java/io/coinos/MainActivity.java index 3a5654a3..83b731a3 100644 --- a/android/app/src/main/java/io/coinos/MainActivity.java +++ b/android/app/src/main/java/io/coinos/MainActivity.java @@ -5,6 +5,8 @@ import android.view.View; import android.view.WindowInsets; import android.view.WindowManager; import androidx.core.view.ViewCompat; +import androidx.webkit.WebSettingsCompat; +import androidx.webkit.WebViewFeature; import com.getcapacitor.BridgeActivity; import com.getcapacitor.Bridge; @@ -25,6 +27,8 @@ import java.util.Arrays; import io.coinos.nfcwriter.NfcWriterPlugin; import io.coinos.hce.HcePlugin; +import io.coinos.hce.HceApduService; +import android.webkit.JavascriptInterface; public class MainActivity extends BridgeActivity { private NfcAdapter nfcAdapter; @@ -52,6 +56,22 @@ public class MainActivity extends BridgeActivity { }); } + // Enable WebAuthn/passkey support in WebView + if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) { + WebSettingsCompat.setWebAuthenticationSupport( + webView.getSettings(), + WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP + ); + } + + // Expose HCE control to JavaScript + webView.addJavascriptInterface(new Object() { + @JavascriptInterface + public void setUrl(String url) { HceApduService.setUrl(url); } + @JavascriptInterface + public String getUrl() { return HceApduService.getUrl(); } + }, "CoinosHce"); + // Other app setup CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); -- cgit v1.2.3