diff --git a/src/webview/android/kotlin/RustWebView.kt b/src/webview/android/kotlin/RustWebView.kt index 11bf510b9..4770cd3b0 100644 --- a/src/webview/android/kotlin/RustWebView.kt +++ b/src/webview/android/kotlin/RustWebView.kt @@ -6,6 +6,8 @@ package {{app-domain-reversed}}.{{app-name-snake-case}} import android.webkit.* import android.content.Context +import android.os.Handler +import android.os.Looper class RustWebView(context: Context): WebView(context) { init { @@ -13,5 +15,11 @@ class RustWebView(context: Context): WebView(context) { {{class-init}} } + fun loadUrlMainThread(url: String) { + Handler(Looper.getMainLooper()).post { + super.loadUrl(url) + } + } + {{class-extension}} } diff --git a/src/webview/android/main_pipe.rs b/src/webview/android/main_pipe.rs index 7bf5c63fc..ce1bd230f 100644 --- a/src/webview/android/main_pipe.rs +++ b/src/webview/android/main_pipe.rs @@ -55,7 +55,12 @@ impl MainPipe<'_> { // Load URL if let Ok(url) = env.new_string(url) { - env.call_method(webview, "loadUrl", "(Ljava/lang/String;)V", &[url.into()])?; + env.call_method( + webview, + "loadUrlMainThread", + "(Ljava/lang/String;)V", + &[url.into()], + )?; } // Enable devtools