mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
Jan26 noon
This commit is contained in:
@@ -67,7 +67,7 @@ fun ApplicationManage(){
|
||||
enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 8.dp)
|
||||
.padding(horizontal = if(isWear){2.dp}else{12.dp},vertical = if(isWear){2.dp}else{6.dp})
|
||||
)
|
||||
if(VERSION.SDK_INT>=24){
|
||||
val isSuspended = {
|
||||
@@ -103,7 +103,7 @@ fun ApplicationManage(){
|
||||
}
|
||||
}
|
||||
Column(modifier = sections()) {
|
||||
Text(text = "许可的输入法", style = MaterialTheme.typography.titleLarge)
|
||||
Text(text = "许可的输入法", style = MaterialTheme.typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
var imeList = mutableListOf<String>()
|
||||
var imeListText by remember{ mutableStateOf("") }
|
||||
val refreshList = {
|
||||
@@ -120,24 +120,30 @@ fun ApplicationManage(){
|
||||
}
|
||||
refreshList()
|
||||
Text(imeListText)
|
||||
Row(modifier = if(!isWear){Modifier.fillMaxWidth()}else{Modifier.fillMaxWidth().horizontalScroll(rememberScrollState())}
|
||||
,horizontalArrangement = Arrangement.SpaceBetween){
|
||||
Button(
|
||||
onClick = {
|
||||
imeList.plus(pkgName)
|
||||
myDpm.setPermittedInputMethods(myComponent, imeList)
|
||||
refreshList()
|
||||
}
|
||||
},
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.48F)},
|
||||
enabled = isDeviceOwner(myDpm)||isProfileOwner(myDpm)
|
||||
) {
|
||||
Text("设为许可的输入法")
|
||||
Text("加入列表")
|
||||
}
|
||||
Button(
|
||||
onClick = {
|
||||
imeList.remove(pkgName)
|
||||
myDpm.setPermittedInputMethods(myComponent,imeList)
|
||||
refreshList()
|
||||
}
|
||||
},
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.92F)},
|
||||
enabled = isDeviceOwner(myDpm)||isProfileOwner(myDpm)
|
||||
) {
|
||||
Text("从列表中移除")
|
||||
}
|
||||
}}
|
||||
}
|
||||
/*Button(
|
||||
onClick = {
|
||||
@@ -171,7 +177,8 @@ private fun AppManageItem(
|
||||
Column {
|
||||
Text(
|
||||
text = stringResource(itemName),
|
||||
style = MaterialTheme.typography.titleLarge
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
)
|
||||
if(itemDesc!=R.string.place_holder){
|
||||
Text(stringResource(itemDesc))
|
||||
|
||||
@@ -78,27 +78,27 @@ fun DeviceControl(){
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium}, textAlign = TextAlign.Center)
|
||||
}
|
||||
}
|
||||
if(VERSION.SDK_INT<24){
|
||||
if(VERSION.SDK_INT<24&&isDeviceOwner(myDpm)){
|
||||
Text(text = "重启和WiFi Mac需要API24",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center,
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
}
|
||||
if(VERSION.SDK_INT<26){
|
||||
if(VERSION.SDK_INT<26&&isDeviceOwner(myDpm)){
|
||||
Text(text = "备份服务需要API26",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center,
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
}
|
||||
if(VERSION.SDK_INT<30){
|
||||
if(VERSION.SDK_INT<30&&isDeviceOwner(myDpm)){
|
||||
Text(text = "自动设置时间和自动设置时区需要API30",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center,
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
}
|
||||
if(VERSION.SDK_INT<31){Text(text = "关闭USB信号需API31",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center,
|
||||
if(VERSION.SDK_INT<31&&isDeviceOwner(myDpm)){Text(text = "关闭USB信号需API31",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center,
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})}
|
||||
if(VERSION.SDK_INT<34){
|
||||
if(VERSION.SDK_INT<34&&isDeviceOwner(myDpm)){
|
||||
Text(text = "隐藏状态栏需要API34",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center,
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
}
|
||||
if(VERSION.SDK_INT>=28){
|
||||
Column(modifier = sections()) {
|
||||
Text(text = "锁屏方式", style = typography.titleLarge)
|
||||
Text(text = "锁屏方式", style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(text = "禁用需要无密码",style=if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
@@ -156,26 +156,26 @@ fun DeviceControl(){
|
||||
}
|
||||
Text(text = "WiFi MAC: $wifimac",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center,style=if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
}
|
||||
if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){
|
||||
Button(
|
||||
onClick = {myDpm.uninstallAllUserCaCerts(myComponent);Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show()},
|
||||
modifier = Modifier.align(Alignment.CenterHorizontally),
|
||||
enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm)
|
||||
modifier = Modifier.align(Alignment.CenterHorizontally)
|
||||
) {
|
||||
Text(text = "清除用户Ca证书")
|
||||
}
|
||||
}}
|
||||
if(isDeviceOwner(myDpm)){
|
||||
SysUpdatePolicy(myDpm,myComponent,myContext)
|
||||
}
|
||||
Column(modifier = sections(MaterialTheme.colorScheme.errorContainer)) {
|
||||
var flag by remember{ mutableIntStateOf(0) }
|
||||
var confirmed by remember{ mutableStateOf(false) }
|
||||
Text(text = "清除数据",style = typography.titleLarge,modifier = Modifier.padding(6.dp))
|
||||
RadioButtonItem("默认",{flag==0},{flag=0})
|
||||
RadioButtonItem("WIPE_EXTERNAL_STORAGE",{flag==0x0001},{flag=0x0001})
|
||||
RadioButtonItem("WIPE_RESET_PROTECTION_DATA",{flag==0x0002},{flag=0x0002})
|
||||
RadioButtonItem("WIPE_EUICC",{flag==0x0004},{flag=0x0004})
|
||||
RadioButtonItem("WIPE_SILENTLY",{flag==0x0008},{flag=0x0008})
|
||||
Text(text = "清空数据的不能是系统用户",
|
||||
Text(text = "清除数据",style = typography.titleLarge,modifier = Modifier.padding(6.dp),color = MaterialTheme.colorScheme.onErrorContainer)
|
||||
RadioButtonItem("默认",{flag==0},{flag=0},MaterialTheme.colorScheme.onErrorContainer)
|
||||
RadioButtonItem("WIPE_EXTERNAL_STORAGE",{flag==0x0001},{flag=0x0001},MaterialTheme.colorScheme.onErrorContainer)
|
||||
RadioButtonItem("WIPE_RESET_PROTECTION_DATA",{flag==0x0002},{flag=0x0002},MaterialTheme.colorScheme.onErrorContainer)
|
||||
RadioButtonItem("WIPE_EUICC",{flag==0x0004},{flag=0x0004},MaterialTheme.colorScheme.onErrorContainer)
|
||||
RadioButtonItem("WIPE_SILENTLY",{flag==0x0008},{flag=0x0008},MaterialTheme.colorScheme.onErrorContainer)
|
||||
Text(text = "清空数据的不能是系统用户",color = MaterialTheme.colorScheme.onErrorContainer,
|
||||
style = if(!sharedPref.getBoolean("isWear",false)){typography.bodyLarge}else{typography.bodyMedium})
|
||||
Button(
|
||||
onClick = {confirmed=!confirmed},
|
||||
@@ -247,7 +247,8 @@ private fun DeviceCtrlItem(
|
||||
Column {
|
||||
Text(
|
||||
text = stringResource(itemName),
|
||||
style = if(!sharedPref.getBoolean("isWear",false)){typography.titleLarge}else{typography.bodyLarge}
|
||||
style = if(!sharedPref.getBoolean("isWear",false)){typography.titleLarge}else{typography.bodyLarge},
|
||||
color = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
)
|
||||
if(itemDesc!=R.string.place_holder&&!sharedPref.getBoolean("isWear",false)){
|
||||
Text(stringResource(itemDesc))
|
||||
|
||||
@@ -268,7 +268,8 @@ fun HomePageItem(name:Int, imgVector:Int, description:Int, navTo:String, myNav:N
|
||||
fun RadioButtonItem(
|
||||
text:String,
|
||||
selected:()->Boolean,
|
||||
operation:()->Unit
|
||||
operation:()->Unit,
|
||||
textColor:Color = MaterialTheme.colorScheme.onBackground
|
||||
){
|
||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||
Row(verticalAlignment = Alignment.CenterVertically,modifier = Modifier
|
||||
@@ -278,7 +279,8 @@ fun RadioButtonItem(
|
||||
.clickable(onClick = operation)
|
||||
) {
|
||||
RadioButton(selected = selected(), onClick = operation,modifier=if(sharedPref.getBoolean("isWear",false)){Modifier.size(28.dp)}else{Modifier})
|
||||
Text(text = text, style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium})
|
||||
Text(text = text, style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium},
|
||||
color = textColor)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -299,7 +301,7 @@ fun sections(bgColor:Color=MaterialTheme.colorScheme.primaryContainer):Modifier{
|
||||
.padding(horizontal = 8.dp, vertical = 4.dp)
|
||||
.clip(RoundedCornerShape(14.dp))
|
||||
.background(color = bgColor)
|
||||
.padding(vertical = 6.dp, horizontal = 10.dp)
|
||||
.padding(vertical = 10.dp, horizontal = 10.dp)
|
||||
}else{
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
|
||||
@@ -110,14 +110,17 @@ fun Password(){
|
||||
horizontalAlignment = Alignment.Start,
|
||||
modifier = sections()
|
||||
) {
|
||||
Text(text = "密码重置令牌", style = typography.titleLarge)
|
||||
Row(modifier = if(!isWear){Modifier}else{Modifier.horizontalScroll(rememberScrollState())}) {
|
||||
Text(text = "密码重置令牌", style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Row(
|
||||
modifier = if(!isWear){Modifier.fillMaxWidth()}else{Modifier.horizontalScroll(rememberScrollState())},
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
){
|
||||
Button(
|
||||
onClick = {
|
||||
if(myDpm.clearResetPasswordToken(myComponent)){ Toast.makeText(myContext, "清除成功", Toast.LENGTH_SHORT).show()
|
||||
}else{ Toast.makeText(myContext, "清除失败", Toast.LENGTH_SHORT).show() }
|
||||
},
|
||||
modifier = Modifier.padding(end = 8.dp),
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.32F)},
|
||||
enabled = isDeviceOwner(myDpm)
|
||||
) {
|
||||
Text("清除")
|
||||
@@ -127,8 +130,8 @@ fun Password(){
|
||||
if(myDpm.setResetPasswordToken(myComponent, myByteArray)){ Toast.makeText(myContext, "设置成功", Toast.LENGTH_SHORT).show()
|
||||
}else{ Toast.makeText(myContext, "设置失败", Toast.LENGTH_SHORT).show() }
|
||||
},
|
||||
modifier = Modifier.padding(end = 8.dp),
|
||||
enabled = isDeviceOwner(myDpm)
|
||||
enabled = isDeviceOwner(myDpm),
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.47F)}
|
||||
) {
|
||||
Text("设置")
|
||||
}
|
||||
@@ -139,7 +142,8 @@ fun Password(){
|
||||
}catch(e:NullPointerException){ Toast.makeText(myContext, "请先设置令牌", Toast.LENGTH_SHORT).show() }
|
||||
}else{ Toast.makeText(myContext, "已经激活", Toast.LENGTH_SHORT).show() }
|
||||
},
|
||||
enabled = isDeviceOwner(myDpm)
|
||||
enabled = isDeviceOwner(myDpm),
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.88F)}
|
||||
) {
|
||||
Text("激活")
|
||||
}
|
||||
@@ -155,16 +159,17 @@ fun Password(){
|
||||
modifier = sections()
|
||||
) {
|
||||
var confirmed by remember{ mutableStateOf(false) }
|
||||
Text(text = "修改密码",style = MaterialTheme.typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
TextField(
|
||||
value = newPwd,
|
||||
onValueChange = {newPwd=it},
|
||||
enabled = !confirmed&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm)),
|
||||
enabled = !confirmed&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm)||myDpm.isAdminActive(myComponent)),
|
||||
label = { Text("密码")},
|
||||
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password, imeAction = ImeAction.Done),
|
||||
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
modifier = Modifier.padding(vertical = if(isWear){0.dp}else{5.dp}).fillMaxWidth()
|
||||
)
|
||||
Text(text = stringResource(R.string.reset_pwd_desc), modifier = Modifier.padding(vertical = 5.dp),style=if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
Text(text = stringResource(R.string.reset_pwd_desc), modifier = Modifier.padding(vertical = 3.dp),style=if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
var resetPwdFlag by remember{ mutableIntStateOf(0) }
|
||||
RadioButtonItem("开机时不要求密码(如果有指纹等其他解锁方式)",
|
||||
{resetPwdFlag==DevicePolicyManager.RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT},
|
||||
@@ -172,14 +177,14 @@ fun Password(){
|
||||
RadioButtonItem("要求立即输入新密码",{resetPwdFlag==DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY},
|
||||
{resetPwdFlag=DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY})
|
||||
RadioButtonItem("无",{resetPwdFlag==0},{resetPwdFlag=0})
|
||||
Row(modifier = if(!isWear){Modifier}else{Modifier.horizontalScroll(rememberScrollState())}) {
|
||||
Row(modifier = if(!isWear){Modifier.fillMaxWidth()}else{Modifier.horizontalScroll(rememberScrollState())},horizontalArrangement = Arrangement.SpaceBetween) {
|
||||
Button(
|
||||
onClick = {
|
||||
if(newPwd.length>=4||newPwd.isEmpty()){ confirmed=!confirmed
|
||||
}else{ Toast.makeText(myContext, "需要4位密码", Toast.LENGTH_SHORT).show() }
|
||||
},
|
||||
modifier = Modifier.padding(end = 5.dp),
|
||||
enabled = isDeviceOwner(myDpm) || isProfileOwner(myDpm) || myDpm.isAdminActive(myComponent)
|
||||
enabled = isDeviceOwner(myDpm) || isProfileOwner(myDpm) || myDpm.isAdminActive(myComponent),
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.3F)}
|
||||
) {
|
||||
Text(text = if(confirmed){"取消"}else{"确定"})
|
||||
}
|
||||
@@ -192,12 +197,12 @@ fun Password(){
|
||||
confirmed=false
|
||||
},
|
||||
colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError),
|
||||
enabled = confirmed&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm))
|
||||
enabled = confirmed&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm)),
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.42F)}
|
||||
) {
|
||||
Text("应用")
|
||||
}
|
||||
}
|
||||
Spacer(Modifier.padding(horizontal = 2.dp))
|
||||
Button(
|
||||
onClick = {
|
||||
val resetSuccess = myDpm.resetPassword(newPwd,resetPwdFlag)
|
||||
@@ -206,9 +211,10 @@ fun Password(){
|
||||
confirmed=false
|
||||
},
|
||||
enabled = confirmed,
|
||||
colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError)
|
||||
colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError),
|
||||
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.9F)}
|
||||
) {
|
||||
Text("应用(旧)")
|
||||
Text("应用(旧)")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -232,7 +238,7 @@ fun Password(){
|
||||
if(isDeviceOwner(myDpm) || isProfileOwner(myDpm)){
|
||||
selectedItem=myDpm.requiredPasswordComplexity
|
||||
}
|
||||
Text(text = "密码复杂度要求", style = typography.titleLarge)
|
||||
Text(text = "密码复杂度要求", style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(text = "不是实际密码复杂度",
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
Text(text = "设置密码复杂度将会取代密码质量",
|
||||
@@ -240,20 +246,37 @@ fun Password(){
|
||||
RadioButtonItem(passwordComplexity[0].second,{selectedItem==passwordComplexity[0].first},{selectedItem=passwordComplexity[0].first})
|
||||
RadioButtonItem(passwordComplexity[1].second,{selectedItem==passwordComplexity[1].first},{selectedItem=passwordComplexity[1].first})
|
||||
RadioButtonItem(passwordComplexity[2].second,{selectedItem==passwordComplexity[2].first},{selectedItem=passwordComplexity[2].first})
|
||||
RadioButtonItem(passwordComplexity[3].second,{selectedItem==passwordComplexity[3].first},{selectedItem=passwordComplexity[3].first})
|
||||
RadioButtonItem(passwordComplexity[3].second,{selectedItem==passwordComplexity[3].first},{selectedItem=passwordComplexity[3].first},
|
||||
if(isWear){MaterialTheme.colorScheme.error}else{MaterialTheme.colorScheme.onBackground})
|
||||
Text(text = "连续性:密码重复(6666)或密码递增递减(4321、2468)", modifier = Modifier.padding(vertical = 3.dp),
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
Button(
|
||||
onClick = {
|
||||
myDpm.requiredPasswordComplexity = selectedItem
|
||||
Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show()
|
||||
},
|
||||
enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm)
|
||||
) {
|
||||
Text("应用")
|
||||
Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.SpaceBetween){
|
||||
Button(
|
||||
onClick = {
|
||||
myDpm.requiredPasswordComplexity = selectedItem
|
||||
Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show()
|
||||
},
|
||||
enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm),
|
||||
modifier = if(isWear){Modifier.fillMaxWidth()}else{Modifier.fillMaxWidth(0.4F)}
|
||||
) {
|
||||
Text(text = "应用")
|
||||
}
|
||||
if(!isWear){
|
||||
Button(
|
||||
onClick = {myContext.startActivity(Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD))},
|
||||
modifier = Modifier.fillMaxWidth(0.95F)
|
||||
){
|
||||
Text("要求设置新密码")
|
||||
}
|
||||
}
|
||||
}
|
||||
Button(onClick = {myContext.startActivity(Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD))}) {
|
||||
Text("要求设置新密码")
|
||||
if(isWear){
|
||||
Button(
|
||||
onClick = {myContext.startActivity(Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD))},
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
){
|
||||
Text("要求设置新密码")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -276,7 +299,7 @@ fun Password(){
|
||||
if(isDeviceOwner(myDpm) || isProfileOwner(myDpm)){
|
||||
selectedItem=myDpm.getPasswordQuality(myComponent)
|
||||
}
|
||||
Text(text = "密码质量要求", style = typography.titleLarge)
|
||||
Text(text = "密码质量要求", style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
if(expanded){
|
||||
Text(text = "不是实际密码质量",
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})}
|
||||
@@ -300,7 +323,8 @@ fun Password(){
|
||||
myDpm.setPasswordQuality(myComponent,selectedItem)
|
||||
Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show()
|
||||
},
|
||||
enabled = isDeviceOwner(myDpm) || isProfileOwner(myDpm)
|
||||
enabled = isDeviceOwner(myDpm) || isProfileOwner(myDpm),
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text("应用")
|
||||
}
|
||||
@@ -334,15 +358,14 @@ fun PasswordItem(
|
||||
var inputContentEdited by remember{ mutableStateOf(false) }
|
||||
var ableToApply by remember{ mutableStateOf(true) }
|
||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||
Text(text = stringResource(itemName), style = typography.titleLarge)
|
||||
Text(text = stringResource(itemName), style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(text= stringResource(itemDesc),modifier=Modifier.padding(vertical = 2.dp),
|
||||
style = if(!sharedPref.getBoolean("isWear",false)){typography.bodyLarge}else{typography.bodyMedium})
|
||||
if(!sharedPref.getBoolean("isWear",false)){Spacer(Modifier.padding(vertical = 2.dp))}
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(end = if (!sharedPref.getBoolean("isWear", false)) { 8.dp } else { 0.dp })
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
){
|
||||
TextField(
|
||||
value = inputContent,
|
||||
@@ -359,7 +382,7 @@ fun PasswordItem(
|
||||
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done),
|
||||
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}),
|
||||
enabled = isDeviceOwner(myDpm),
|
||||
modifier = if(sharedPref.getBoolean("isWear",false)){Modifier}else{Modifier.fillMaxWidth(0.8F)}
|
||||
modifier = if(sharedPref.getBoolean("isWear",false)){Modifier.fillMaxWidth()}else{Modifier.fillMaxWidth(0.8F)}
|
||||
)
|
||||
if(!sharedPref.getBoolean("isWear",false)){
|
||||
IconButton(
|
||||
@@ -375,9 +398,11 @@ fun PasswordItem(
|
||||
Icon(imageVector = Icons.Outlined.Check, contentDescription = null)
|
||||
}}
|
||||
}
|
||||
if(sharedPref.getBoolean("isWear",false)&&isDeviceOwner(myDpm)&&ableToApply){
|
||||
if(sharedPref.getBoolean("isWear",false)){
|
||||
Button(
|
||||
onClick = {focusMgr.clearFocus() ; setMethod(inputContent) ; inputContentEdited=inputContent!=getMethod()}
|
||||
onClick = {focusMgr.clearFocus() ; setMethod(inputContent) ; inputContentEdited=inputContent!=getMethod()},
|
||||
enabled = isDeviceOwner(myDpm)&&ableToApply,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text("应用")
|
||||
}
|
||||
|
||||
@@ -69,8 +69,8 @@ fun DpmPermissions(navCtrl:NavHostController){
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Column {
|
||||
Text(text = "Device Admin", fontSize = if(!isWear){22.sp}else{20.sp})
|
||||
Text(if(isda){"已激活"}else{"未激活"})
|
||||
Text(text = "Device Admin", fontSize = if(!isWear){22.sp}else{20.sp},color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(text = if(isda){"已激活"}else{"未激活"})
|
||||
}
|
||||
if(!isWear)
|
||||
if(isda){
|
||||
@@ -112,7 +112,7 @@ fun DpmPermissions(navCtrl:NavHostController){
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Column {
|
||||
Text(text = "Profile Owner", fontSize = if(!isWear){22.sp}else{20.sp})
|
||||
Text(text = "Profile Owner", fontSize = if(!isWear){22.sp}else{20.sp},color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(if(isProfileOwner(myDpm)){"已激活"}else{"未激活"})
|
||||
}
|
||||
if(isProfileOwner(myDpm)&&VERSION.SDK_INT>=24&&!isWear){
|
||||
@@ -156,7 +156,7 @@ fun DpmPermissions(navCtrl:NavHostController){
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Column {
|
||||
Text(text = "Device Owner", fontSize = if(!isWear){22.sp}else{20.sp})
|
||||
Text(text = "Device Owner", fontSize = if(!isWear){22.sp}else{20.sp},color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(if(isDeviceOwner(myDpm)){"已激活"}else{"未激活"})
|
||||
}
|
||||
if(isDeviceOwner(myDpm)&&!isWear){
|
||||
@@ -202,7 +202,7 @@ fun DpmPermissions(navCtrl:NavHostController){
|
||||
Column(
|
||||
modifier = sections()
|
||||
) {
|
||||
Text(text = "设备信息", style = typography.titleLarge)
|
||||
Text(text = "设备信息", style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
val orgDevice = myDpm.isOrganizationOwnedDeviceWithManagedProfile
|
||||
Text("由组织拥有的受管理资料设备:$orgDevice",style=if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
if(isDeviceOwner(myDpm)|| isProfileOwner(myDpm)){
|
||||
@@ -233,7 +233,7 @@ fun DpmPermissions(navCtrl:NavHostController){
|
||||
if(VERSION.SDK_INT>=31&&(isProfileOwner(myDpm)|| isDeviceOwner(myDpm))){
|
||||
Column(modifier = sections()) {
|
||||
val specificId:String = myDpm.enrollmentSpecificId
|
||||
Text(text = "设备唯一标识码", style = typography.titleLarge)
|
||||
Text(text = "设备唯一标识码", style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text("(恢复出厂设置不变)",style=if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
if(specificId!=""){
|
||||
Text(specificId)
|
||||
@@ -247,7 +247,7 @@ fun DpmPermissions(navCtrl:NavHostController){
|
||||
}
|
||||
if(isDeviceOwner(myDpm) || isProfileOwner(myDpm)){
|
||||
Column(modifier = sections()) {
|
||||
Text(text = "不受控制的账号类型", style = typography.titleLarge)
|
||||
Text(text = "不受控制的账号类型", style = typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text("作用未知",style=if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
var noManageAccount = myDpm.accountTypesWithManagementDisabled?.toMutableList()
|
||||
var accountlist by remember{ mutableStateOf("") }
|
||||
|
||||
@@ -52,7 +52,7 @@ fun AppSetting(navCtrl:NavHostController){
|
||||
Column(
|
||||
modifier = Modifier.padding(start = 8.dp, end = 8.dp, bottom = 12.dp)
|
||||
) {
|
||||
Text(text = "Android owner", style = MaterialTheme.typography.headlineMedium, color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(text = "Android owner", style = MaterialTheme.typography.headlineSmall, color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text(text = "使用安卓的Device admin、Device owner 、Profile owner,全方位掌控你的设备",
|
||||
style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium})
|
||||
Spacer(Modifier.padding(vertical = 4.dp))
|
||||
@@ -69,7 +69,7 @@ fun AppSetting(navCtrl:NavHostController){
|
||||
Icon(
|
||||
painter = painterResource(id = R.drawable.open_in_new),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.padding(start = 6.dp, end = 8.dp),
|
||||
modifier = Modifier.padding(start = 6.dp, end = 10.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
Column {
|
||||
|
||||
@@ -53,37 +53,37 @@ fun UserManage(){
|
||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||
val isWear = sharedPref.getBoolean("isWear",false)
|
||||
Column(modifier = sections()) {
|
||||
Text(text = "用户信息", style = MaterialTheme.typography.titleLarge)
|
||||
Text("用户个数:${userList.size}")
|
||||
Spacer(Modifier.padding(vertical = 5.dp))
|
||||
Text("用户已解锁:${UserManagerCompat.isUserUnlocked(myContext)}")
|
||||
Text(text = "用户信息", style = MaterialTheme.typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
Text("用户个数:${userList.size}",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
Spacer(Modifier.padding(vertical = if(isWear){2.dp}else{5.dp}))
|
||||
Text("用户已解锁:${UserManagerCompat.isUserUnlocked(myContext)}",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
if(VERSION.SDK_INT>=24){
|
||||
Text("支持多用户:${UserManager.supportsMultipleUsers()}")
|
||||
Text("支持多用户:${UserManager.supportsMultipleUsers()}",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
}
|
||||
if(VERSION.SDK_INT>=31){
|
||||
Text("系统用户: ${UserManager.isHeadlessSystemUserMode()}")
|
||||
Text("系统用户: ${UserManager.isHeadlessSystemUserMode()}",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
}
|
||||
Spacer(Modifier.padding(vertical = 5.dp))
|
||||
Spacer(Modifier.padding(vertical = if(isWear){2.dp}else{5.dp}))
|
||||
if (VERSION.SDK_INT >= 28) {
|
||||
val logoutable = myDpm.isLogoutEnabled
|
||||
Text(text = "用户可以退出 : $logoutable")
|
||||
Text(text = "用户可以退出 : $logoutable",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
if(isDeviceOwner(myDpm)|| isProfileOwner(myDpm)){
|
||||
val ephemeralUser = myDpm.isEphemeralUser(myComponent)
|
||||
Text(text = "临时用户: $ephemeralUser")
|
||||
Text(text = "临时用户: $ephemeralUser",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
}
|
||||
val affiliatedUser = myDpm.isAffiliatedUser
|
||||
Text(text = "次级用户: $affiliatedUser")
|
||||
Text(text = "次级用户: $affiliatedUser",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
}
|
||||
Spacer(Modifier.padding(5.dp))
|
||||
Text("切换用户后或设备重启后会删除临时用户")
|
||||
Spacer(Modifier.padding(vertical = if(isWear){2.dp}else{5.dp}))
|
||||
Text("切换用户后或设备重启后会删除临时用户",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
}
|
||||
|
||||
Column(modifier = sections()) {
|
||||
Text(text = "用户操作", style = MaterialTheme.typography.titleLarge)
|
||||
Text(text = "用户操作", style = MaterialTheme.typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
if(VERSION.SDK_INT>28){
|
||||
var resultForLogout by remember{ mutableIntStateOf(-1) }
|
||||
var resultForStop by remember{ mutableIntStateOf(-1) }
|
||||
Text("登出用户需要成为次级用户的Profile Owner")
|
||||
Text("登出用户需要成为次级用户的Profile Owner",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
Button(onClick = {resultForLogout = myDpm.logoutUser(myComponent)}, enabled = isProfileOwner(myDpm)) {
|
||||
Text("登出用户")
|
||||
}
|
||||
@@ -119,13 +119,13 @@ fun UserManage(){
|
||||
Button(onClick = { createWorkProfile(myContext)}) {
|
||||
Text("创建工作资料")
|
||||
}
|
||||
Text("可能无法创建工作资料")
|
||||
Text("可能无法创建工作资料",style = if(isWear){MaterialTheme.typography.bodyMedium}else{MaterialTheme.typography.bodyLarge})
|
||||
}
|
||||
|
||||
if(VERSION.SDK_INT>=24){
|
||||
Column(modifier = sections()) {
|
||||
var userName by remember{ mutableStateOf("") }
|
||||
Text(text = "创建用户", style = MaterialTheme.typography.titleLarge)
|
||||
Text(text = "创建用户", style = MaterialTheme.typography.titleLarge,color = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
TextField(
|
||||
value = userName,
|
||||
onValueChange = {userName=it},
|
||||
|
||||
@@ -66,6 +66,11 @@ fun UserRestriction(){
|
||||
items(1){
|
||||
Text(text = "打开开关后会禁用对应的功能",modifier = Modifier.padding(3.dp),
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
if(VERSION.SDK_INT<24){
|
||||
Text(text = "所有的用户限制都需要API24,你的设备低于API24,无法使用。",
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium},
|
||||
color = MaterialTheme.colorScheme.error)
|
||||
}
|
||||
if(isProfileOwner(myDpm)){
|
||||
Text(text = "Profile owner无法更改部分功能",
|
||||
style = if(!isWear){typography.bodyLarge}else{typography.bodyMedium})
|
||||
@@ -183,7 +188,8 @@ private fun UserRestrictionItem(
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
){
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = if(sharedPref.getBoolean("isWear",false)){Modifier.fillMaxWidth(0.65F)}else{Modifier.fillMaxWidth(0.8F)}
|
||||
) {
|
||||
if(!sharedPref.getBoolean("isWear",false)){
|
||||
Icon(
|
||||
@@ -192,13 +198,11 @@ private fun UserRestrictionItem(
|
||||
modifier = Modifier.padding(start = 4.dp, end = 8.dp),
|
||||
tint = MaterialTheme.colorScheme.secondary
|
||||
)}
|
||||
Column(
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
) {
|
||||
Column{
|
||||
Text(
|
||||
text = stringResource(itemName),
|
||||
style = if(!sharedPref.getBoolean("isWear",false)){typography.titleLarge}else{typography.bodyLarge},
|
||||
color = MaterialTheme.colorScheme.onTertiaryContainer
|
||||
color = MaterialTheme.colorScheme.onSecondaryContainer
|
||||
)
|
||||
if(restrictionDescription!=""){Text(text = restrictionDescription, color = MaterialTheme.colorScheme.onSecondaryContainer)}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#383838</color>
|
||||
<color name="ic_launcher_background">#191919</color>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user