mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 19:15:58 +00:00
feat: add clear task (start fresh) option for lock task mode
This commit is contained in:
@@ -874,7 +874,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
||||
getLockTaskPackages()
|
||||
}
|
||||
@RequiresApi(28)
|
||||
fun startLockTaskMode(packageName: String, activity: String): Boolean {
|
||||
fun startLockTaskMode(packageName: String, activity: String, clearTask: Boolean): Boolean {
|
||||
if (!DPM.isLockTaskPermitted(packageName)) {
|
||||
val list = lockTaskPackages.value.map { it.name } + packageName
|
||||
DPM.setLockTaskPackages(DAR, list.toTypedArray())
|
||||
@@ -885,7 +885,10 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
||||
Intent().setComponent(ComponentName(packageName, activity))
|
||||
} else PM.getLaunchIntentForPackage(packageName)
|
||||
if (intent != null) {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
intent.addFlags(
|
||||
Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
or (if (clearTask) Intent.FLAG_ACTIVITY_CLEAR_TASK else 0)
|
||||
)
|
||||
application.startActivity(intent, options.toBundle())
|
||||
application.startForegroundService(Intent(application, LockTaskService::class.java))
|
||||
return true
|
||||
|
||||
@@ -31,6 +31,7 @@ import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.animateContentSize
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
@@ -1150,7 +1151,7 @@ fun NearbyStreamingPolicyScreen(
|
||||
fun LockTaskModeScreen(
|
||||
chosenPackage: Channel<String>, onChoosePackage: () -> Unit,
|
||||
lockTaskPackages: StateFlow<List<AppInfo>>, getLockTaskPackages: () -> Unit,
|
||||
setLockTaskPackage: (String, Boolean) -> Unit, startLockTaskMode: (String, String) -> Boolean,
|
||||
setLockTaskPackage: (String, Boolean) -> Unit, startLockTaskMode: (String, String, Boolean) -> Boolean,
|
||||
getLockTaskFeatures: () -> Int, setLockTaskFeature: (Int) -> String?, onNavigateUp: () -> Unit
|
||||
) {
|
||||
val coroutine = rememberCoroutineScope()
|
||||
@@ -1205,7 +1206,7 @@ fun LockTaskModeScreen(
|
||||
@RequiresApi(28)
|
||||
@Composable
|
||||
private fun StartLockTaskMode(
|
||||
startLockTaskMode: (String, String) -> Boolean,
|
||||
startLockTaskMode: (String, String, Boolean) -> Boolean,
|
||||
chosenPackage: Channel<String>, onChoosePackage: () -> Unit
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
@@ -1214,6 +1215,8 @@ private fun StartLockTaskMode(
|
||||
var packageName by rememberSaveable { mutableStateOf("") }
|
||||
var activity by rememberSaveable { mutableStateOf("") }
|
||||
var specifyActivity by rememberSaveable { mutableStateOf(false) }
|
||||
var clearTask by rememberSaveable { mutableStateOf(true) }
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
packageName = chosenPackage.receive()
|
||||
}
|
||||
@@ -1228,7 +1231,30 @@ private fun StartLockTaskMode(
|
||||
Row(
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 4.dp), verticalAlignment = Alignment.CenterVertically
|
||||
.padding(top = 8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Checkbox(
|
||||
checked = clearTask,
|
||||
onCheckedChange = { clearTask = it }
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.lock_task_mode_start_clear_task),
|
||||
modifier = Modifier
|
||||
.padding(start = 8.dp)
|
||||
.clickable(
|
||||
indication = null,
|
||||
interactionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
clearTask = !clearTask
|
||||
}
|
||||
)
|
||||
}
|
||||
Row(
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(bottom = 4.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Checkbox(specifyActivity, {
|
||||
specifyActivity = it
|
||||
@@ -1249,7 +1275,7 @@ private fun StartLockTaskMode(
|
||||
.fillMaxWidth()
|
||||
.padding(bottom = 5.dp),
|
||||
onClick = {
|
||||
val result = startLockTaskMode(packageName, activity)
|
||||
val result = startLockTaskMode(packageName, activity, clearTask)
|
||||
if (!result) context.showOperationResultToast(false)
|
||||
},
|
||||
enabled = packageName.isNotBlank() && (!specifyActivity || activity.isNotBlank())
|
||||
|
||||
Reference in New Issue
Block a user