fix(android): improve webview compatibility

This commit is contained in:
Peter Steinberger
2025-12-18 02:08:53 +01:00
parent 2b2434d239
commit 6d60224c93
2 changed files with 8 additions and 1 deletions

View File

@@ -1,9 +1,11 @@
package com.steipete.clawdis.node package com.steipete.clawdis.node
import android.Manifest import android.Manifest
import android.content.pm.ApplicationInfo
import android.os.Bundle import android.os.Bundle
import android.os.Build import android.os.Build
import android.view.WindowManager import android.view.WindowManager
import android.webkit.WebView
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.viewModels import androidx.activity.viewModels
@@ -25,6 +27,8 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val isDebuggable = (applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE) != 0
WebView.setWebContentsDebuggingEnabled(isDebuggable)
applyImmersiveMode() applyImmersiveMode()
requestDiscoveryPermissionsIfNeeded() requestDiscoveryPermissionsIfNeeded()
requestNotificationPermissionIfNeeded() requestNotificationPermissionIfNeeded()

View File

@@ -6,6 +6,7 @@ import android.content.pm.PackageManager
import android.graphics.Color import android.graphics.Color
import android.view.View import android.view.View
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebSettings
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@@ -147,7 +148,9 @@ private fun CanvasView(viewModel: MainViewModel, modifier: Modifier = Modifier)
factory = { factory = {
WebView(context).apply { WebView(context).apply {
settings.javaScriptEnabled = true 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() webViewClient = WebViewClient()
setBackgroundColor(Color.TRANSPARENT) setBackgroundColor(Color.TRANSPARENT)
setBackgroundResource(0) setBackgroundResource(0)