fix TextField focus bug

This commit is contained in:
BinTianqi
2024-02-25 10:10:48 +08:00
parent 9873ef7dcd
commit a46b349912
9 changed files with 62 additions and 66 deletions

View File

@@ -21,6 +21,7 @@ import android.provider.Settings
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
@@ -69,7 +70,7 @@ fun ApplicationManage(){
onValueChange = { pkgName = it }, onValueChange = { pkgName = it },
label = { Text("包名") }, label = { Text("包名") },
modifier = Modifier.fillMaxWidth().padding(horizontal = 4.dp), modifier = Modifier.fillMaxWidth().padding(horizontal = 4.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
) )
} }
@@ -80,7 +81,7 @@ fun ApplicationManage(){
onValueChange = { pkgName = it }, onValueChange = { pkgName = it },
label = { Text("包名") }, label = { Text("包名") },
modifier = Modifier.fillMaxWidth().padding(horizontal = 2.dp,vertical = 2.dp), modifier = Modifier.fillMaxWidth().padding(horizontal = 2.dp,vertical = 2.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
) )
}else{Spacer(Modifier.padding(vertical = 2.dp))} }else{Spacer(Modifier.padding(vertical = 2.dp))}
@@ -233,7 +234,7 @@ fun ApplicationManage(){
onValueChange = {inputPermission = it}, onValueChange = {inputPermission = it},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
Text("当前状态:$currentState", style = bodyTextStyle) Text("当前状态:$currentState", style = bodyTextStyle)
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){ Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){

View File

@@ -11,6 +11,7 @@ import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.focusable
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
@@ -174,7 +175,7 @@ fun SystemManage(){
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
enabled = isDeviceOwner(myDpm)||(VERSION.SDK_INT>=30&&isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile), enabled = isDeviceOwner(myDpm)||(VERSION.SDK_INT>=30&&isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
if(isWear){ if(isWear){
Button( Button(
@@ -384,7 +385,7 @@ fun SystemManage(){
label = {Text("包名")}, label = {Text("包名")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 3.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 3.dp)
) )
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){ Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){
Button( Button(
@@ -535,12 +536,12 @@ fun SystemManage(){
var silent by remember{mutableStateOf(false)} var silent by remember{mutableStateOf(false)}
var reason by remember{mutableStateOf("")} var reason by remember{mutableStateOf("")}
Text(text = "清除数据",style = typography.titleLarge,modifier = Modifier.padding(6.dp),color = colorScheme.onErrorContainer) Text(text = "清除数据",style = typography.titleLarge,modifier = Modifier.padding(6.dp),color = colorScheme.onErrorContainer)
CheckBoxItem("清除外部存储",{externalStorage},{externalStorage=!externalStorage}, colorScheme.onErrorContainer) CheckBoxItem("清除外部存储",{externalStorage},{externalStorage=!externalStorage;confirmed=false}, colorScheme.onErrorContainer)
if(VERSION.SDK_INT>=22&&isDeviceOwner(myDpm)){ if(VERSION.SDK_INT>=22&&isDeviceOwner(myDpm)){
CheckBoxItem("清除受保护的数据",{protectionData},{protectionData=!protectionData}, colorScheme.onErrorContainer) CheckBoxItem("清除受保护的数据",{protectionData},{protectionData=!protectionData;confirmed=false}, colorScheme.onErrorContainer)
} }
if(VERSION.SDK_INT>=28){ CheckBoxItem("清除eUICC",{euicc},{euicc=!euicc}, colorScheme.onErrorContainer) } if(VERSION.SDK_INT>=28){ CheckBoxItem("清除eUICC",{euicc},{euicc=!euicc;confirmed=false}, colorScheme.onErrorContainer) }
if(VERSION.SDK_INT>=29){ CheckBoxItem("静默清除",{silent},{silent=!silent}, colorScheme.onErrorContainer) } if(VERSION.SDK_INT>=29){ CheckBoxItem("静默清除",{silent},{silent=!silent;confirmed=false}, colorScheme.onErrorContainer) }
AnimatedVisibility(!silent&&VERSION.SDK_INT>=28) { AnimatedVisibility(!silent&&VERSION.SDK_INT>=28) {
OutlinedTextField( OutlinedTextField(
value = reason, onValueChange = {reason=it}, value = reason, onValueChange = {reason=it},
@@ -548,7 +549,7 @@ fun SystemManage(){
enabled = !confirmed, enabled = !confirmed,
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 3.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 3.dp)
) )
} }
Button( Button(
@@ -558,6 +559,7 @@ fun SystemManage(){
if(externalStorage){flag += WIPE_EXTERNAL_STORAGE} if(externalStorage){flag += WIPE_EXTERNAL_STORAGE}
if(protectionData&&VERSION.SDK_INT>=22){flag += WIPE_RESET_PROTECTION_DATA} if(protectionData&&VERSION.SDK_INT>=22){flag += WIPE_RESET_PROTECTION_DATA}
if(euicc&&VERSION.SDK_INT>=28){flag += WIPE_EUICC} if(euicc&&VERSION.SDK_INT>=28){flag += WIPE_EUICC}
if(reason==""){silent = true}
if(silent&&VERSION.SDK_INT>=29){flag += WIPE_SILENTLY} if(silent&&VERSION.SDK_INT>=29){flag += WIPE_SILENTLY}
confirmed=!confirmed confirmed=!confirmed
}, },

View File

@@ -2,16 +2,12 @@ package com.binbin.androidowner
import android.app.admin.DevicePolicyManager import android.app.admin.DevicePolicyManager
import android.app.admin.DevicePolicyManager.* import android.app.admin.DevicePolicyManager.*
import android.content.ActivityNotFoundException import android.content.*
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.pm.PackageManager.NameNotFoundException
import android.os.Build.VERSION import android.os.Build.VERSION
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
@@ -142,7 +138,7 @@ fun ManagedProfile() {
Text(text = "工作资料处于关闭状态的时间达到该限制后会挂起个人应用0为无限制", style = bodyTextStyle) Text(text = "工作资料处于关闭状态的时间达到该限制后会挂起个人应用0为无限制", style = bodyTextStyle)
Text(text = "个人应用已经因此挂起:${myDpm.getPersonalAppsSuspendedReasons(myComponent)==PERSONAL_APPS_SUSPENDED_PROFILE_TIMEOUT}") Text(text = "个人应用已经因此挂起:${myDpm.getPersonalAppsSuspendedReasons(myComponent)==PERSONAL_APPS_SUSPENDED_PROFILE_TIMEOUT}")
OutlinedTextField( OutlinedTextField(
value = time, onValueChange = {time=it}, modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), value = time, onValueChange = {time=it}, modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp),
label = {Text("时间(ms)")}, label = {Text("时间(ms)")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
@@ -169,7 +165,7 @@ fun ManagedProfile() {
label = {Text("Action")}, label = {Text("Action")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
Button( Button(
onClick = { onClick = {
@@ -212,7 +208,7 @@ fun ManagedProfile() {
label = {Text("组织ID")}, label = {Text("组织ID")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
AnimatedVisibility(orgId.length !in 6..64) { AnimatedVisibility(orgId.length !in 6..64) {
Text(text = "长度应在6~64个字符之间", style = bodyTextStyle) Text(text = "长度应在6~64个字符之间", style = bodyTextStyle)

View File

@@ -15,6 +15,7 @@ import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
@@ -129,7 +130,7 @@ fun Network(){
onValueChange = {inputSsid = it}, onValueChange = {inputSsid = it},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){ Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){
Button( Button(
@@ -203,7 +204,7 @@ fun Network(){
label = {Text("DNS主机名")}, label = {Text("DNS主机名")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
Button( Button(
onClick = { onClick = {
@@ -267,7 +268,7 @@ fun Network(){
onValueChange = {keyPair = it}, onValueChange = {keyPair = it},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
val isExist = try{myDpm.isKeyPairGrantedToWifiAuth(keyPair)}catch(e:java.lang.IllegalArgumentException){false} val isExist = try{myDpm.isKeyPairGrantedToWifiAuth(keyPair)}catch(e:java.lang.IllegalArgumentException){false}
Text("已存在:$isExist") Text("已存在:$isExist")
@@ -314,7 +315,7 @@ fun Network(){
onValueChange = {inputNum = it}, onValueChange = {inputNum = it},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp),
enabled = !nextStep enabled = !nextStep
) )
}else{ }else{
@@ -387,7 +388,7 @@ fun Network(){
label = {Text("名称")}, label = {Text("名称")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically){ Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically){
Text(text = "启用", style = typography.titleLarge) Text(text = "启用", style = typography.titleLarge)
@@ -401,7 +402,7 @@ fun Network(){
label = {Text("用户名")}, label = {Text("用户名")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
if(VERSION.SDK_INT>=33){ if(VERSION.SDK_INT>=33){
@@ -412,7 +413,7 @@ fun Network(){
label = {Text("ID")}, label = {Text("ID")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
} }
@@ -432,7 +433,7 @@ fun Network(){
label = {Text("ID")}, label = {Text("ID")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
} }
@@ -443,7 +444,7 @@ fun Network(){
label = {Text("位掩码")}, label = {Text("位掩码")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
Text(text = "描述", style = typography.titleLarge) Text(text = "描述", style = typography.titleLarge)
@@ -453,7 +454,7 @@ fun Network(){
label = {Text("文本")}, label = {Text("文本")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
Text(text = "MMS代理", style = typography.titleLarge) Text(text = "MMS代理", style = typography.titleLarge)
@@ -464,7 +465,7 @@ fun Network(){
label = {Text("地址")}, label = {Text("地址")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
} }
TextField( TextField(
@@ -473,7 +474,7 @@ fun Network(){
label = {Text("端口")}, label = {Text("端口")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
Text(text = "代理", style = typography.titleLarge) Text(text = "代理", style = typography.titleLarge)
@@ -484,7 +485,7 @@ fun Network(){
label = {Text("地址")}, label = {Text("地址")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
} }
TextField( TextField(
@@ -493,7 +494,7 @@ fun Network(){
label = {Text("端口")}, label = {Text("端口")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
Text(text = "MMSC", style = typography.titleLarge) Text(text = "MMSC", style = typography.titleLarge)
@@ -503,7 +504,7 @@ fun Network(){
label = {Text("Uri")}, label = {Text("Uri")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
if(VERSION.SDK_INT>=33){ if(VERSION.SDK_INT>=33){
@@ -514,7 +515,7 @@ fun Network(){
label = {Text("IPV4")}, label = {Text("IPV4")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
TextField( TextField(
value = mtuV6, value = mtuV6,
@@ -522,7 +523,7 @@ fun Network(){
label = {Text("IPV6")}, label = {Text("IPV6")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
} }
@@ -539,7 +540,7 @@ fun Network(){
label = {Text("位掩码")}, label = {Text("位掩码")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
Text(text = "OperatorNumeric", style = typography.titleLarge) Text(text = "OperatorNumeric", style = typography.titleLarge)
@@ -549,7 +550,7 @@ fun Network(){
label = {Text("ID")}, label = {Text("ID")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
Text(text = "密码", style = typography.titleLarge) Text(text = "密码", style = typography.titleLarge)
@@ -559,7 +560,7 @@ fun Network(){
label = {Text("密码")}, label = {Text("密码")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(top = 2.dp, bottom = 4.dp)
) )
if(VERSION.SDK_INT>=33){ if(VERSION.SDK_INT>=33){

View File

@@ -10,14 +10,11 @@ import android.os.Build.VERSION
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.clickable import androidx.compose.foundation.*
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Check import androidx.compose.material.icons.outlined.Check
import androidx.compose.material3.* import androidx.compose.material3.*
@@ -27,10 +24,8 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.KeyboardType
@@ -155,7 +150,7 @@ fun Password(){
label = { Text("密码")}, label = { Text("密码")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.padding(vertical = if(isWear){0.dp}else{5.dp}).fillMaxWidth() modifier = Modifier.focusable().padding(vertical = if(isWear){0.dp}else{5.dp}).fillMaxWidth()
) )
Text(text = stringResource(R.string.reset_pwd_desc), modifier = Modifier.padding(vertical = 3.dp),style=bodyTextStyle) Text(text = stringResource(R.string.reset_pwd_desc), modifier = Modifier.padding(vertical = 3.dp),style=bodyTextStyle)
var resetPwdFlag by remember{ mutableIntStateOf(0) } var resetPwdFlag by remember{ mutableIntStateOf(0) }
@@ -451,7 +446,7 @@ private fun PasswordItem(
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
enabled = isDeviceOwner(myDpm), enabled = isDeviceOwner(myDpm),
modifier = Modifier.fillMaxWidth(), modifier = Modifier.focusable().fillMaxWidth(),
trailingIcon = { trailingIcon = {
Icon( Icon(
imageVector = Icons.Outlined.Check, contentDescription = "OK", imageVector = Icons.Outlined.Check, contentDescription = "OK",

View File

@@ -8,6 +8,7 @@ import android.content.Intent
import android.os.Build.VERSION import android.os.Build.VERSION
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.foundation.focusable
import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
@@ -215,7 +216,7 @@ fun DpmPermissions(navCtrl:NavHostController){
var orgName by remember{mutableStateOf(try{myDpm.getOrganizationName(myComponent).toString()}catch(e:SecurityException){""})} var orgName by remember{mutableStateOf(try{myDpm.getOrganizationName(myComponent).toString()}catch(e:SecurityException){""})}
Text(text = "组织名称", style = typography.titleLarge, color = titleColor) Text(text = "组织名称", style = typography.titleLarge, color = titleColor)
OutlinedTextField( OutlinedTextField(
value = orgName, onValueChange = {orgName=it}, modifier = Modifier.fillMaxWidth().padding(vertical = 3.dp), value = orgName, onValueChange = {orgName=it}, modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 3.dp),
label = {Text("组织名称")}, label = {Text("组织名称")},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusManager.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusManager.clearFocus()})
@@ -254,7 +255,7 @@ fun DpmPermissions(navCtrl:NavHostController){
value = inputText, value = inputText,
onValueChange = {inputText=it}, onValueChange = {inputText=it},
label = {Text("账号类型")}, label = {Text("账号类型")},
modifier = Modifier.fillMaxWidth().padding(bottom = 4.dp), modifier = Modifier.focusable().fillMaxWidth().padding(bottom = 4.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusManager.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusManager.clearFocus()})
) )
@@ -303,13 +304,13 @@ fun DpmPermissions(navCtrl:NavHostController){
Text(text = "把Device owner或Profile owner权限转移到另一个应用。目标必须是Device admin", style = bodyTextStyle) Text(text = "把Device owner或Profile owner权限转移到另一个应用。目标必须是Device admin", style = bodyTextStyle)
OutlinedTextField( OutlinedTextField(
value = pkg, onValueChange = {pkg = it}, label = {Text("目标包名")}, value = pkg, onValueChange = {pkg = it}, label = {Text("目标包名")},
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(onNext = {focusManager.moveFocus(FocusDirection.Down)}) keyboardActions = KeyboardActions(onNext = {focusManager.moveFocus(FocusDirection.Down)})
) )
OutlinedTextField( OutlinedTextField(
value = cls, onValueChange = {cls = it}, label = {Text("目标类名")}, value = cls, onValueChange = {cls = it}, label = {Text("目标类名")},
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusManager.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusManager.clearFocus()})
) )
@@ -393,7 +394,7 @@ fun DeviceOwnerInfo(
value = if(inputContent!=null){ inputContent.toString() }else{""}, value = if(inputContent!=null){ inputContent.toString() }else{""},
label = {Text(stringResource(textfield))}, label = {Text(stringResource(textfield))},
onValueChange = { inputContent=it }, onValueChange = { inputContent=it },
modifier = Modifier.fillMaxWidth().padding(vertical = 4.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 4.dp)
) )
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) { Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) {
Button( Button(
@@ -432,7 +433,3 @@ fun activateDeviceAdmin(inputContext:Context,inputComponent:ComponentName){
Toast.makeText(inputContext,"不支持",Toast.LENGTH_SHORT).show() Toast.makeText(inputContext,"不支持",Toast.LENGTH_SHORT).show()
} }
} }
fun activateShizuku(){
}

View File

@@ -5,11 +5,10 @@ import android.content.ComponentName
import android.content.Context import android.content.Context
import android.content.Context.MODE_PRIVATE import android.content.Context.MODE_PRIVATE
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Binder
import android.os.Build.VERSION import android.os.Build.VERSION
import android.os.UserManager
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.foundation.focusable
import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
@@ -19,9 +18,12 @@ import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.Warning import androidx.compose.material.icons.rounded.Warning
import androidx.compose.material3.* import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme.colorScheme import androidx.compose.material3.MaterialTheme.colorScheme
import androidx.compose.material3.MaterialTheme.typography import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -99,7 +101,7 @@ fun ShizukuActivate(){
label = {Text("UserID")}, label = {Text("UserID")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp)
) )
Button( Button(
onClick = { onClick = {

View File

@@ -8,6 +8,7 @@ import android.content.Context
import android.os.Build.VERSION import android.os.Build.VERSION
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
@@ -71,7 +72,7 @@ fun SysUpdatePolicy(){
onValueChange = {windowedPolicyStart=it}, onValueChange = {windowedPolicyStart=it},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth(0.5F) modifier = Modifier.focusable().fillMaxWidth(0.5F)
) )
Spacer(Modifier.padding(horizontal = 3.dp)) Spacer(Modifier.padding(horizontal = 3.dp))
OutlinedTextField( OutlinedTextField(
@@ -80,7 +81,7 @@ fun SysUpdatePolicy(){
label = {Text("结束时间")}, label = {Text("结束时间")},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth() modifier = Modifier.focusable().fillMaxWidth()
) )
} }
Spacer(Modifier.padding(vertical = 3.dp)) Spacer(Modifier.padding(vertical = 3.dp))

View File

@@ -12,6 +12,7 @@ import android.os.UserManager
import android.provider.MediaStore import android.provider.MediaStore
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
@@ -87,7 +88,7 @@ fun UserManage() {
}, },
label = {Text(if(useUid){"UID"}else{"序列号"})}, label = {Text(if(useUid){"UID"}else{"序列号"})},
enabled = isDeviceOwner(myDpm), enabled = isDeviceOwner(myDpm),
modifier = Modifier.fillMaxWidth().padding(vertical = 3.dp), modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 3.dp),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
) )
@@ -184,7 +185,7 @@ fun UserManage() {
value = userName, value = userName,
onValueChange = {userName=it}, onValueChange = {userName=it},
label = {Text("用户名")}, label = {Text("用户名")},
modifier = Modifier.fillMaxWidth().padding(vertical = 4.dp), modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 4.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
) )
@@ -226,7 +227,7 @@ fun UserManage() {
value = input, value = input,
onValueChange = {input = it}, onValueChange = {input = it},
label = {Text("ID")}, label = {Text("ID")},
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 2.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
) )
@@ -336,7 +337,7 @@ private fun UserSessionMessage(text:String, textField:String, profileOwner:Boole
label = {Text(textField)}, label = {Text(textField)},
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
modifier = Modifier.fillMaxWidth().padding(vertical = 6.dp), modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 6.dp),
enabled = isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&profileOwner) enabled = isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&profileOwner)
) )
Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.SpaceBetween) { Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.SpaceBetween) {