Feat(Tool): Launch tool by scheme

This commit is contained in:
2024-05-11 19:00:41 +08:00
parent 3a91e834b7
commit 3338522d40
5 changed files with 23 additions and 9 deletions

View File

@@ -28,6 +28,13 @@
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </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:scheme="oxygen" android:host="opentool"/>
</intent-filter>
</activity> </activity>
</application> </application>

View File

@@ -37,6 +37,7 @@ import top.fatweb.oxygen.toolbox.model.userdata.LaunchPageConfig
import top.fatweb.oxygen.toolbox.model.userdata.ThemeBrandConfig import top.fatweb.oxygen.toolbox.model.userdata.ThemeBrandConfig
import top.fatweb.oxygen.toolbox.monitor.NetworkMonitor import top.fatweb.oxygen.toolbox.monitor.NetworkMonitor
import top.fatweb.oxygen.toolbox.monitor.TimeZoneMonitor import top.fatweb.oxygen.toolbox.monitor.TimeZoneMonitor
import top.fatweb.oxygen.toolbox.navigation.navigateToToolView
import top.fatweb.oxygen.toolbox.repository.userdata.UserDataRepository import top.fatweb.oxygen.toolbox.repository.userdata.UserDataRepository
import top.fatweb.oxygen.toolbox.ui.OxygenApp import top.fatweb.oxygen.toolbox.ui.OxygenApp
import top.fatweb.oxygen.toolbox.ui.rememberOxygenAppState import top.fatweb.oxygen.toolbox.ui.rememberOxygenAppState
@@ -119,6 +120,15 @@ class MainActivity : ComponentActivity() {
OxygenApp(appState) OxygenApp(appState)
} }
} }
LaunchedEffect(intent.data) {
intent.data?.run {
val pathSegments = pathSegments
if (pathSegments.size == 2) {
appState.navController.navigateToToolView(pathSegments[0], pathSegments[1])
}
}
}
} }
} }

View File

@@ -43,8 +43,8 @@ class TimeZoneBroadcastMonitor @Inject constructor(
val zonIdFromIntent = if (Build.VERSION.SDK_INT < VERSION_CODES.R) { val zonIdFromIntent = if (Build.VERSION.SDK_INT < VERSION_CODES.R) {
null null
} else { } else {
intent.getStringExtra(Intent.EXTRA_TIMEZONE)?.let { timeZoneId -> intent.getStringExtra(Intent.EXTRA_TIMEZONE)?.run {
val zoneId = ZoneId.of(timeZoneId, ZoneId.SHORT_IDS) val zoneId = ZoneId.of(this, ZoneId.SHORT_IDS)
zoneId.toKotlinTimeZone() zoneId.toKotlinTimeZone()
} }
} }

View File

@@ -250,11 +250,11 @@ fun Scrollbar(
draggedOffset = offset draggedOffset = offset
} }
val onDragEnd: () -> Unit = { val onDragEnd: () -> Unit = {
dragInteraction?.let { interactionSource?.tryEmit(DragInteraction.Stop(it)) } dragInteraction?.run { interactionSource?.tryEmit(DragInteraction.Stop(this)) }
draggedOffset = Offset.Unspecified draggedOffset = Offset.Unspecified
} }
val onDragCancel: () -> Unit = { val onDragCancel: () -> Unit = {
dragInteraction?.let { interactionSource?.tryEmit(DragInteraction.Cancel(it)) } dragInteraction?.run { interactionSource?.tryEmit(DragInteraction.Cancel(this)) }
draggedOffset = Offset.Unspecified draggedOffset = Offset.Unspecified
} }
val onDrag: (change: PointerInputChange, dragAmount: Float) -> Unit = val onDrag: (change: PointerInputChange, dragAmount: Float) -> Unit =

View File

@@ -9,11 +9,8 @@ import androidx.compose.animation.core.tween
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -45,7 +42,7 @@ internal fun ToolViewRoute(
val toolViewUiState by viewModel.toolViewUiState.collectAsStateWithLifecycle() val toolViewUiState by viewModel.toolViewUiState.collectAsStateWithLifecycle()
ToolViewScreen( ToolViewScreen(
modifier = modifier.safeDrawingPadding(), modifier = modifier,
onBackClick = onBackClick, onBackClick = onBackClick,
toolViewUiState = toolViewUiState toolViewUiState = toolViewUiState
) )
@@ -63,7 +60,7 @@ internal fun ToolViewScreen(
val infiniteTransition = rememberInfiniteTransition(label = "infiniteTransition") val infiniteTransition = rememberInfiniteTransition(label = "infiniteTransition")
Box( Box(
modifier = modifier.windowInsetsPadding(WindowInsets(0, 0, 0, 0)), modifier = modifier,
) { ) {
OxygenTopAppBar( OxygenTopAppBar(
modifier = Modifier.zIndex(100f), modifier = Modifier.zIndex(100f),