diff --git a/manager/app/src/main/AndroidManifest.xml b/manager/app/src/main/AndroidManifest.xml
index cbebf197..bc343b48 100644
--- a/manager/app/src/main/AndroidManifest.xml
+++ b/manager/app/src/main/AndroidManifest.xml
@@ -32,7 +32,10 @@
+ android:autoRemoveFromRecents="true"
+ android:documentLaunchMode="intoExisting"
+ android:exported="false"
+ android:theme="@style/Theme.KernelSU.WebUI" />
- val webRoot = File("/data/adb/modules/${moduleId}/webroot")
- val webViewAssetLoader = WebViewAssetLoader.Builder()
- .setDomain("mui.kernelsu.org")
- .addPathHandler("/",
- SuFilePathHandler(context, webRoot)
- )
- .build()
-
- val webViewClient = object : AccompanistWebViewClient() {
- override fun shouldInterceptRequest(
- view: WebView,
- request: WebResourceRequest
- ): WebResourceResponse? {
- return webViewAssetLoader.shouldInterceptRequest(request.url)
- }
- }
- WebView(
- state = rememberWebViewState(url = "https://mui.kernelsu.org/index.html"),
- Modifier
- .fillMaxSize()
- .padding(innerPadding),
- client = webViewClient,
- factory = { context ->
- WebView(context).apply {
- settings.javaScriptEnabled = true
- settings.domStorageEnabled = true
- settings.allowFileAccess = false
- addJavascriptInterface(WebViewInterface(context, this), "ksu")
- }
- })
- }
-}
\ No newline at end of file
diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebUIActivity.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebUIActivity.kt
index 30146945..9d2fe8a8 100644
--- a/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebUIActivity.kt
+++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebUIActivity.kt
@@ -1,49 +1,58 @@
package me.weishu.kernelsu.ui.webui
+import android.annotation.SuppressLint
+import android.app.ActivityManager
+import android.content.Context
import android.os.Bundle
+import android.webkit.WebResourceRequest
+import android.webkit.WebResourceResponse
+import android.webkit.WebView
+import android.webkit.WebViewClient
import androidx.activity.ComponentActivity
-import androidx.activity.compose.setContent
-import androidx.compose.animation.ExperimentalAnimationApi
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.padding
-import androidx.compose.material3.Scaffold
-import androidx.compose.material3.SnackbarHost
-import androidx.compose.material3.SnackbarHostState
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.remember
-import androidx.compose.ui.Modifier
-import androidx.navigation.compose.currentBackStackEntryAsState
-import com.google.accompanist.navigation.animation.rememberAnimatedNavController
-import com.ramcosta.composedestinations.DestinationsNavHost
-import me.weishu.kernelsu.ui.screen.NavGraphs
-import me.weishu.kernelsu.ui.screen.WebScreen
-import me.weishu.kernelsu.ui.theme.KernelSUTheme
-import me.weishu.kernelsu.ui.util.LocalSnackbarHost
+import androidx.webkit.WebViewAssetLoader
+import java.io.File
+@SuppressLint("SetJavaScriptEnabled")
class WebUIActivity : ComponentActivity() {
- @OptIn(ExperimentalAnimationApi::class)
+ private lateinit var webviewInterface: WebViewInterface
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- val id = intent.getStringExtra("id")!!
+ val moduleId = intent.getStringExtra("id")!!
val name = intent.getStringExtra("name")!!
- setTitle("KernelSU - $name")
+ setTaskDescription(ActivityManager.TaskDescription("KernelSU - $name"))
- setContent {
- KernelSUTheme {
- val navController = rememberAnimatedNavController()
- val snackbarHostState = remember { SnackbarHostState() }
- Scaffold(
- snackbarHost = { SnackbarHost(snackbarHostState) }
- ) { innerPadding ->
- Box(modifier = Modifier
- .padding(innerPadding)
- .fillMaxSize()) {
- WebScreen(moduleId = id, moduleName = name)
- }
- }
+ val prefs = getSharedPreferences("settings", Context.MODE_PRIVATE)
+ WebView.setWebContentsDebuggingEnabled(prefs.getBoolean("enable_web_debugging", false))
+
+ val webRoot = File("/data/adb/modules/${moduleId}/webroot")
+ val webViewAssetLoader = WebViewAssetLoader.Builder()
+ .setDomain("mui.kernelsu.org")
+ .addPathHandler(
+ "/",
+ SuFilePathHandler(this, webRoot)
+ )
+ .build()
+
+ val webViewClient = object : WebViewClient() {
+ override fun shouldInterceptRequest(
+ view: WebView,
+ request: WebResourceRequest
+ ): WebResourceResponse? {
+ return webViewAssetLoader.shouldInterceptRequest(request.url)
}
}
+
+ val webView = WebView(this).apply {
+ settings.javaScriptEnabled = true
+ settings.domStorageEnabled = true
+ settings.allowFileAccess = false
+ webviewInterface = WebViewInterface(this@WebUIActivity, this)
+ addJavascriptInterface(webviewInterface, "ksu")
+ setWebViewClient(webViewClient)
+ loadUrl("https://mui.kernelsu.org/index.html")
+ }
+
+ setContentView(webView)
}
}
\ No newline at end of file
diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebViewInterface.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebViewInterface.kt
index 9d94c600..8e5a3dac 100644
--- a/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebViewInterface.kt
+++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/webui/WebViewInterface.kt
@@ -21,10 +21,6 @@ import java.util.concurrent.CompletableFuture
class WebViewInterface(val context: Context, private val webView: WebView) {
- companion object {
- var isHideSystemUI: Boolean = false
- }
-
@JavascriptInterface
fun exec(cmd: String): String {
val shell = createRootShell(true)
@@ -167,7 +163,6 @@ class WebViewInterface(val context: Context, private val webView: WebView) {
} else {
showSystemUI(context.window)
}
- isHideSystemUI = enable
}
}
}
diff --git a/manager/app/src/main/res/values-night-v27/themes.xml b/manager/app/src/main/res/values-night-v27/themes.xml
new file mode 100644
index 00000000..10a773b1
--- /dev/null
+++ b/manager/app/src/main/res/values-night-v27/themes.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/manager/app/src/main/res/values-night/themes.xml b/manager/app/src/main/res/values-night/themes.xml
index 10a773b1..91abf657 100644
--- a/manager/app/src/main/res/values-night/themes.xml
+++ b/manager/app/src/main/res/values-night/themes.xml
@@ -1,7 +1,10 @@
-
\ No newline at end of file
diff --git a/manager/app/src/main/res/values-v27/themes.xml b/manager/app/src/main/res/values-v27/themes.xml
new file mode 100644
index 00000000..325416c0
--- /dev/null
+++ b/manager/app/src/main/res/values-v27/themes.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/manager/app/src/main/res/values/themes.xml b/manager/app/src/main/res/values/themes.xml
index 325416c0..7d41d8ec 100644
--- a/manager/app/src/main/res/values/themes.xml
+++ b/manager/app/src/main/res/values/themes.xml
@@ -1,7 +1,10 @@
-
\ No newline at end of file