From 6d60224c933cc87f2fbb96ed15ca6be7bb6d6c51 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 18 Dec 2025 02:08:53 +0100 Subject: [PATCH] fix(android): improve webview compatibility --- .../src/main/java/com/steipete/clawdis/node/MainActivity.kt | 4 ++++ .../src/main/java/com/steipete/clawdis/node/ui/RootScreen.kt | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/android/app/src/main/java/com/steipete/clawdis/node/MainActivity.kt b/apps/android/app/src/main/java/com/steipete/clawdis/node/MainActivity.kt index b4057dbf0..1b10e1e63 100644 --- a/apps/android/app/src/main/java/com/steipete/clawdis/node/MainActivity.kt +++ b/apps/android/app/src/main/java/com/steipete/clawdis/node/MainActivity.kt @@ -1,9 +1,11 @@ package com.steipete.clawdis.node import android.Manifest +import android.content.pm.ApplicationInfo import android.os.Bundle import android.os.Build import android.view.WindowManager +import android.webkit.WebView import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels @@ -25,6 +27,8 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + val isDebuggable = (applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE) != 0 + WebView.setWebContentsDebuggingEnabled(isDebuggable) applyImmersiveMode() requestDiscoveryPermissionsIfNeeded() requestNotificationPermissionIfNeeded() diff --git a/apps/android/app/src/main/java/com/steipete/clawdis/node/ui/RootScreen.kt b/apps/android/app/src/main/java/com/steipete/clawdis/node/ui/RootScreen.kt index e20241711..79def591e 100644 --- a/apps/android/app/src/main/java/com/steipete/clawdis/node/ui/RootScreen.kt +++ b/apps/android/app/src/main/java/com/steipete/clawdis/node/ui/RootScreen.kt @@ -6,6 +6,7 @@ import android.content.pm.PackageManager import android.graphics.Color import android.view.View import android.webkit.WebView +import android.webkit.WebSettings import android.webkit.WebViewClient import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -147,7 +148,9 @@ private fun CanvasView(viewModel: MainViewModel, modifier: Modifier = Modifier) factory = { WebView(context).apply { settings.javaScriptEnabled = true - settings.domStorageEnabled = false + // Some embedded web UIs (incl. the "background website") use localStorage/sessionStorage. + settings.domStorageEnabled = true + settings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE webViewClient = WebViewClient() setBackgroundColor(Color.TRANSPARENT) setBackgroundResource(0)