mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
Merge pull request #214 from nktnet1/lock-task-mode-clear-task-on-start
feat: lock task mode clear task on start
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())
|
||||
|
||||
@@ -732,4 +732,5 @@
|
||||
<string name="activate_method">Activate method</string>
|
||||
<string name="adb_command">ADB command</string>
|
||||
<string name="owndroid_warning">This app uses Device owner or Profile owner privileges. These privileges are extremely dangerous, please use them with caution. If used improperly, they may result in severe losses. The developers will not be responsible for this.</string>
|
||||
<string name="lock_task_mode_start_clear_task">Clear task (start fresh)</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user