Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions manager/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/zip" android:scheme="content" />
</intent-filter>
</activity>

<activity
Expand Down
28 changes: 28 additions & 0 deletions manager/app/src/main/java/me/weishu/kernelsu/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@ import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
Expand All @@ -37,15 +40,19 @@ import com.ramcosta.composedestinations.DestinationsNavHost
import com.ramcosta.composedestinations.animations.NavHostAnimatedDestinationStyle
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
import com.ramcosta.composedestinations.generated.destinations.FlashScreenDestination
import com.ramcosta.composedestinations.generated.NavGraphs
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.ramcosta.composedestinations.utils.rememberDestinationsNavigator
import dev.chrisbanes.haze.HazeState
import dev.chrisbanes.haze.HazeStyle
import dev.chrisbanes.haze.HazeTint
import dev.chrisbanes.haze.hazeSource
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
import me.weishu.kernelsu.Natives
import me.weishu.kernelsu.ui.component.BottomBar
import me.weishu.kernelsu.ui.screen.FlashIt
import me.weishu.kernelsu.ui.screen.HomePager
import me.weishu.kernelsu.ui.screen.ModulePager
import me.weishu.kernelsu.ui.screen.SettingPager
Expand All @@ -57,6 +64,8 @@ import top.yukonga.miuix.kmp.theme.MiuixTheme

class MainActivity : ComponentActivity() {

private val intentState = MutableStateFlow(0)

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -104,6 +113,18 @@ class MainActivity : ComponentActivity() {

KernelSUTheme(colorMode = colorMode, keyColor = keyColor) {
val navController = rememberNavController()
val navigator = navController.rememberDestinationsNavigator()

// Navigate to FlashScreen if ZIP file is provided and isManager
// Collect intentState as Compose State for thread-safe observation
val intentStateValue by intentState.collectAsState()
LaunchedEffect(intentStateValue) {
intent?.data
?.takeIf { isManager && it.scheme == "content" && intent.type == "application/zip" }
?.let {
navigator.navigate(FlashScreenDestination(FlashIt.FlashModules(listOf(it))))
}
}

Scaffold {
DestinationsNavHost(
Expand Down Expand Up @@ -148,6 +169,13 @@ class MainActivity : ComponentActivity() {
}
}
}

override fun onNewIntent(intent: android.content.Intent) {
super.onNewIntent(intent)
setIntent(intent)
// Increment intentState to trigger LaunchedEffect re-execution
intentState.value += 1
}
}


Expand Down