org-owned profile features

This commit is contained in:
BinTianqi
2024-02-09 23:58:07 +08:00
parent d3e36e445b
commit 8dedd63f61
7 changed files with 100 additions and 131 deletions

View File

@@ -11,8 +11,8 @@ android {
applicationId = "com.binbin.androidowner" applicationId = "com.binbin.androidowner"
minSdk = 21 minSdk = 21
targetSdk = 34 targetSdk = 34
versionCode = 12 versionCode = 13
versionName = "2.5" versionName = "3.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { vectorDrawables {

View File

@@ -59,7 +59,6 @@ fun ApplicationManage(){
value = pkgName, value = pkgName,
onValueChange = { pkgName = it }, onValueChange = { pkgName = it },
label = { Text("包名") }, label = { Text("包名") },
enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm),
modifier = Modifier.fillMaxWidth().padding(horizontal = 4.dp), modifier = Modifier.fillMaxWidth().padding(horizontal = 4.dp),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
@@ -71,7 +70,6 @@ fun ApplicationManage(){
value = pkgName, value = pkgName,
onValueChange = { pkgName = it }, onValueChange = { pkgName = it },
label = { Text("包名") }, label = { Text("包名") },
enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm),
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(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}) keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()})
@@ -80,6 +78,18 @@ fun ApplicationManage(){
if(VERSION.SDK_INT>=24&&isProfileOwner(myDpm)&&myDpm.isManagedProfile(myComponent)){ if(VERSION.SDK_INT>=24&&isProfileOwner(myDpm)&&myDpm.isManagedProfile(myComponent)){
Text(text = "作用域: 工作资料", style = bodyTextStyle, textAlign = TextAlign.Center,modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp)) Text(text = "作用域: 工作资料", style = bodyTextStyle, textAlign = TextAlign.Center,modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp))
} }
Button(
onClick = {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.setData(Uri.parse("package:$pkgName"))
startActivity(myContext,intent,null)
},
modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp)
){
Text("应用详情")
}
if(VERSION.SDK_INT>=24&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm))){ if(VERSION.SDK_INT>=24&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm))){
AppManageItem( AppManageItem(
R.string.suspend,R.string.place_holder, R.string.suspend,R.string.place_holder,
@@ -441,16 +451,13 @@ fun ApplicationManage(){
} }
} }
if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){
Column(modifier = sections()) { Column(modifier = sections()) {
Text(text = "许可的输入法", style = typography.titleLarge,color = colorScheme.onPrimaryContainer) Text(text = "许可的输入法", style = typography.titleLarge,color = colorScheme.onPrimaryContainer)
var imeList = mutableListOf<String>() var imeList = mutableListOf<String>()
var imeListText by remember{ mutableStateOf("") } var imeListText by remember{ mutableStateOf("") }
val refreshList = { val refreshList = {
if(isProfileOwner(myDpm) || isDeviceOwner(myDpm)){ if(myDpm.getPermittedInputMethods(myComponent)!=null){ imeList = myDpm.getPermittedInputMethods(myComponent)!! }
if(myDpm.getPermittedInputMethods(myComponent)!=null){
imeList = myDpm.getPermittedInputMethods(myComponent)!!
}
}
imeListText = "" imeListText = ""
for(eachIme in imeList){ imeListText += "$eachIme \n" } for(eachIme in imeList){ imeListText += "$eachIme \n" }
} }
@@ -460,34 +467,31 @@ fun ApplicationManage(){
Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.SpaceBetween){ Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.SpaceBetween){
Button( Button(
onClick = { onClick = {
imeList.plus(pkgName)
focusMgr.clearFocus() focusMgr.clearFocus()
imeList.plus(pkgName)
Toast.makeText(myContext, if(myDpm.setPermittedInputMethods(myComponent, imeList)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show() Toast.makeText(myContext, if(myDpm.setPermittedInputMethods(myComponent, imeList)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show()
refreshList() refreshList()
}, },
modifier = Modifier.fillMaxWidth(0.49F), modifier = Modifier.fillMaxWidth(0.49F)
enabled = isDeviceOwner(myDpm)||isProfileOwner(myDpm)
) { ) {
Text("添加") Text("添加")
} }
Button( Button(
onClick = { onClick = {
imeList.remove(pkgName)
focusMgr.clearFocus() focusMgr.clearFocus()
imeList.remove(pkgName)
Toast.makeText(myContext, if(myDpm.setPermittedInputMethods(myComponent, imeList)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show() Toast.makeText(myContext, if(myDpm.setPermittedInputMethods(myComponent, imeList)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show()
refreshList() refreshList()
}, },
modifier = Modifier.fillMaxWidth(0.96F), modifier = Modifier.fillMaxWidth(0.96F)
enabled = isDeviceOwner(myDpm)||isProfileOwner(myDpm)
) { ) {
Text("移除") Text("移除")
} }
} }
} }
}
Column(modifier = sections()){ if(VERSION.SDK_INT>=28){
Text(text = "清除应用存储", style = typography.titleLarge, color = colorScheme.onPrimaryContainer)
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){
Button( Button(
onClick = { onClick = {
val executor = Executors.newCachedThreadPool() val executor = Executors.newCachedThreadPool()
@@ -498,30 +502,15 @@ fun ApplicationManage(){
Toast.makeText(myContext, toastText, Toast.LENGTH_SHORT).show() Toast.makeText(myContext, toastText, Toast.LENGTH_SHORT).show()
Looper.loop() Looper.loop()
} }
if(VERSION.SDK_INT>=28){
myDpm.clearApplicationUserData(myComponent,pkgName,executor,onClear) myDpm.clearApplicationUserData(myComponent,pkgName,executor,onClear)
}
}, },
enabled = (isDeviceOwner(myDpm)||isProfileOwner(myDpm))&&VERSION.SDK_INT>=28, enabled = isDeviceOwner(myDpm)||isProfileOwner(myDpm),
modifier = Modifier.fillMaxWidth(0.49F) modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp)
) { ) {
Text("清除") Text("清除应用存储")
}
Button(
onClick = {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.setData(Uri.parse("package:$pkgName"))
startActivity(myContext,intent,null)
},
modifier = Modifier.fillMaxWidth(0.96F)
){
Text("详情")
}
}
if(VERSION.SDK_INT<28){
Text(text = "清除存储需API28", style = bodyTextStyle)
} }
} }
if(VERSION.SDK_INT>=34){ if(VERSION.SDK_INT>=34){
Button( Button(
onClick = { onClick = {

View File

@@ -43,12 +43,12 @@ fun DeviceControl(){
val bodyTextStyle = if(isWear){typography.bodyMedium}else{typography.bodyLarge} val bodyTextStyle = if(isWear){typography.bodyMedium}else{typography.bodyLarge}
val focusMgr = LocalFocusManager.current val focusMgr = LocalFocusManager.current
Column(modifier = Modifier.verticalScroll(rememberScrollState()).navigationBarsPadding()) { Column(modifier = Modifier.verticalScroll(rememberScrollState()).navigationBarsPadding()) {
if(isDeviceOwner(myDpm)){ if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){
DeviceCtrlItem(R.string.disable_cam,R.string.place_holder, R.drawable.photo_camera_fill0, DeviceCtrlItem(R.string.disable_cam,R.string.place_holder, R.drawable.photo_camera_fill0,
{myDpm.getCameraDisabled(null)},{b -> myDpm.setCameraDisabled(myComponent,b)} {myDpm.getCameraDisabled(null)},{b -> myDpm.setCameraDisabled(myComponent,b)}
) )
} }
if(isDeviceOwner(myDpm)){ if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){
DeviceCtrlItem(R.string.disable_scrcap,R.string.aosp_scrrec_also_work,R.drawable.screenshot_fill0, DeviceCtrlItem(R.string.disable_scrcap,R.string.aosp_scrrec_also_work,R.drawable.screenshot_fill0,
{myDpm.getScreenCaptureDisabled(null)},{b -> myDpm.setScreenCaptureDisabled(myComponent,b) } {myDpm.getScreenCaptureDisabled(null)},{b -> myDpm.setScreenCaptureDisabled(myComponent,b) }
) )
@@ -58,7 +58,7 @@ fun DeviceControl(){
{myDpm.isStatusBarDisabled},{b -> myDpm.setStatusBarDisabled(myComponent,b) } {myDpm.isStatusBarDisabled},{b -> myDpm.setStatusBarDisabled(myComponent,b) }
) )
} }
if(isDeviceOwner(myDpm)){ if(isDeviceOwner(myDpm)||(VERSION.SDK_INT>=30&&isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile)){
if(VERSION.SDK_INT>=30){ if(VERSION.SDK_INT>=30){
DeviceCtrlItem(R.string.auto_time,R.string.place_holder,R.drawable.schedule_fill0, DeviceCtrlItem(R.string.auto_time,R.string.place_holder,R.drawable.schedule_fill0,
{myDpm.getAutoTimeEnabled(myComponent)},{b -> myDpm.setAutoTimeEnabled(myComponent,b) } {myDpm.getAutoTimeEnabled(myComponent)},{b -> myDpm.setAutoTimeEnabled(myComponent,b) }
@@ -95,7 +95,7 @@ fun DeviceControl(){
{myDpm.isCommonCriteriaModeEnabled(myComponent)},{b -> myDpm.setCommonCriteriaModeEnabled(myComponent,b)} {myDpm.isCommonCriteriaModeEnabled(myComponent)},{b -> myDpm.setCommonCriteriaModeEnabled(myComponent,b)}
) )
} }
if(VERSION.SDK_INT>=31&&isDeviceOwner(myDpm)){ if(VERSION.SDK_INT>=31&&(isDeviceOwner(myDpm)||(VERSION.SDK_INT>=30&&isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile))){
if(myDpm.canUsbDataSignalingBeDisabled()){ if(myDpm.canUsbDataSignalingBeDisabled()){
DeviceCtrlItem(R.string.usb_signal,R.string.place_holder,R.drawable.usb_fill0, DeviceCtrlItem(R.string.usb_signal,R.string.place_holder,R.drawable.usb_fill0,
{myDpm.isUsbDataSignalingEnabled},{b -> myDpm.isUsbDataSignalingEnabled = b } {myDpm.isUsbDataSignalingEnabled},{b -> myDpm.isUsbDataSignalingEnabled = b }
@@ -104,37 +104,27 @@ fun DeviceControl(){
Text(text = "你的设备不支持关闭USB信号",modifier = Modifier.fillMaxWidth(), style = bodyTextStyle, textAlign = TextAlign.Center) Text(text = "你的设备不支持关闭USB信号",modifier = Modifier.fillMaxWidth(), style = bodyTextStyle, textAlign = TextAlign.Center)
} }
} }
if(isDeviceOwner(myDpm)){
if(VERSION.SDK_INT<23){ Text(text = "禁止蓝牙分享联系人需API23") }
if(VERSION.SDK_INT<24){ Text(text = "安全日志API24",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, style = bodyTextStyle) }
if(VERSION.SDK_INT<26){ Text(text = "备份服务和网络日志需要API26",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, style = bodyTextStyle) }
if(VERSION.SDK_INT<30){ Text(text = "自动设置时区和通用标准模式需要API30",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, style = bodyTextStyle) }
if(VERSION.SDK_INT<31){ Text(text = "关闭USB信号需API31",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, style = bodyTextStyle) }
if(VERSION.SDK_INT<34){ Text(text = "隐藏状态栏需要API34",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, style = bodyTextStyle) }
}
if(VERSION.SDK_INT>=28){ if(VERSION.SDK_INT>=28){
Column(modifier = sections()) { Column(modifier = sections()) {
Text(text = "锁屏方式", style = typography.titleLarge,color = colorScheme.onPrimaryContainer) Text(text = "锁屏方式", style = typography.titleLarge,color = colorScheme.onPrimaryContainer)
Text(text = "禁用需要无密码",style=bodyTextStyle) Text(text = "禁用需要无密码",style=bodyTextStyle)
Row( Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) {
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
Button( Button(
onClick = { Toast.makeText(myContext, if(myDpm.setKeyguardDisabled(myComponent,true)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show() }, onClick = { Toast.makeText(myContext, if(myDpm.setKeyguardDisabled(myComponent,true)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show() },
enabled = isDeviceOwner(myDpm)|| (isProfileOwner(myDpm)&&myDpm.isAffiliatedUser), enabled = isDeviceOwner(myDpm)|| (isProfileOwner(myDpm)&&myDpm.isAffiliatedUser),
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.49F)} modifier = Modifier.fillMaxWidth(0.49F)
) { ) {
Text("禁用") Text("禁用")
} }
Button( Button(
onClick = { Toast.makeText(myContext, if(myDpm.setKeyguardDisabled(myComponent,false)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show() }, onClick = { Toast.makeText(myContext, if(myDpm.setKeyguardDisabled(myComponent,false)){"成功"}else{"失败"}, Toast.LENGTH_SHORT).show() },
enabled = isDeviceOwner(myDpm)|| (isProfileOwner(myDpm)&&myDpm.isAffiliatedUser), enabled = isDeviceOwner(myDpm)|| (isProfileOwner(myDpm)&&myDpm.isAffiliatedUser),
modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.96F)} modifier = Modifier.fillMaxWidth(0.96F)
) { ) {
Text("启用") Text("启用")
} }
}} }
}
} }
Column(modifier = sections()){ Column(modifier = sections()){
@@ -183,7 +173,7 @@ fun DeviceControl(){
onValueChange = {inputTime = it}, onValueChange = {inputTime = 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()}),
enabled = isDeviceOwner(myDpm), enabled = isDeviceOwner(myDpm)||(VERSION.SDK_INT>=30&&isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile),
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp) modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp)
) )
if(isWear){ if(isWear){
@@ -198,7 +188,7 @@ fun DeviceControl(){
Button( Button(
onClick = {myDpm.setTime(myComponent,inputTime.toLong())}, onClick = {myDpm.setTime(myComponent,inputTime.toLong())},
modifier = Modifier.fillMaxWidth(if(isWear){1F}else{0.35F}), modifier = Modifier.fillMaxWidth(if(isWear){1F}else{0.35F}),
enabled = inputTime!=""&&isDeviceOwner(myDpm) enabled = inputTime!=""&&(isDeviceOwner(myDpm)||(VERSION.SDK_INT>=30&&isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile))
) { ) {
Text("应用") Text("应用")
} }
@@ -505,7 +495,8 @@ fun DeviceControl(){
containerColor = if(confirmed){ colorScheme.primary }else{ colorScheme.error }, containerColor = if(confirmed){ colorScheme.primary }else{ colorScheme.error },
contentColor = if(confirmed){ colorScheme.onPrimary }else{ colorScheme.onError } contentColor = if(confirmed){ colorScheme.onPrimary }else{ colorScheme.onError }
), ),
enabled = myDpm.isAdminActive(myComponent) enabled = myDpm.isAdminActive(myComponent),
modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = if(confirmed){"取消"}else{"确定"}) Text(text = if(confirmed){"取消"}else{"确定"})
} }
@@ -516,7 +507,8 @@ fun DeviceControl(){
containerColor = colorScheme.error, containerColor = colorScheme.error,
contentColor = colorScheme.onError contentColor = colorScheme.onError
), ),
enabled = confirmed enabled = confirmed,
modifier = Modifier.fillMaxWidth(if(VERSION.SDK_INT>=34){0.49F}else{1F})
) { ) {
Text("WipeData") Text("WipeData")
} }
@@ -527,7 +519,8 @@ fun DeviceControl(){
containerColor = colorScheme.error, containerColor = colorScheme.error,
contentColor = colorScheme.onError contentColor = colorScheme.onError
), ),
enabled = confirmed enabled = confirmed,
modifier = Modifier.fillMaxWidth(0.96F)
) { ) {
Text("WipeDevice(API34)") Text("WipeDevice(API34)")
} }

View File

@@ -6,7 +6,6 @@ import android.content.ComponentName
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.content.pm.PackageInstaller
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
@@ -225,18 +224,6 @@ fun ManagedProfile() {
} }
} }
if(isProfileOwner(myDpm)&&(VERSION.SDK_INT<24||(VERSION.SDK_INT>=24&&myDpm.isManagedProfile(myComponent)))){
Column(modifier = sections(colorScheme.tertiaryContainer)){
Text(text = "提示", style = typography.titleLarge)
SelectionContainer {
Text(
text = "安装应用的Action是android.intent.action.INSTALL_PACKAGE需配合android.intent.action.VIEW使用",
style = bodyTextStyle, color = colorScheme.onTertiaryContainer
)
}
}
}
Spacer(Modifier.padding(vertical = 30.dp)) Spacer(Modifier.padding(vertical = 30.dp))
} }
} }

View File

@@ -62,7 +62,7 @@ fun Network(){
{myDpm.isPreferentialNetworkServiceEnabled},{b -> myDpm.isPreferentialNetworkServiceEnabled = b} {myDpm.isPreferentialNetworkServiceEnabled},{b -> myDpm.isPreferentialNetworkServiceEnabled = b}
) )
} }
if(VERSION.SDK_INT>=30&&isDeviceOwner(myDpm)){ if(VERSION.SDK_INT>=30&&(isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile))){
DeviceCtrlItem(R.string.wifi_lockdown,R.string.place_holder,R.drawable.wifi_password_fill0, DeviceCtrlItem(R.string.wifi_lockdown,R.string.place_holder,R.drawable.wifi_password_fill0,
{myDpm.hasLockdownAdminConfiguredNetworks(myComponent)},{b -> myDpm.setConfiguredNetworksLockdownState(myComponent,b)} {myDpm.hasLockdownAdminConfiguredNetworks(myComponent)},{b -> myDpm.setConfiguredNetworksLockdownState(myComponent,b)}
) )
@@ -76,7 +76,7 @@ fun Network(){
RadioButtonItem("WPA-EAP", {selectedWifiSecLevel==DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_EAP}, {selectedWifiSecLevel= DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_EAP}) RadioButtonItem("WPA-EAP", {selectedWifiSecLevel==DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_EAP}, {selectedWifiSecLevel= DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_EAP})
RadioButtonItem("WPA3-192bit", {selectedWifiSecLevel==DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_192}, {selectedWifiSecLevel= DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_192}) RadioButtonItem("WPA3-192bit", {selectedWifiSecLevel==DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_192}, {selectedWifiSecLevel= DevicePolicyManager.WIFI_SECURITY_ENTERPRISE_192})
Button( Button(
enabled = isDeviceOwner(myDpm)||isProfileOwner(myDpm), enabled = isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile),
onClick = { onClick = {
myDpm.minimumRequiredWifiSecurityLevel=selectedWifiSecLevel myDpm.minimumRequiredWifiSecurityLevel=selectedWifiSecLevel
Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show() Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show()
@@ -90,7 +90,7 @@ fun Network(){
Text(text = "Wifi安全等级需API33", modifier = Modifier.padding(vertical = 3.dp)) Text(text = "Wifi安全等级需API33", modifier = Modifier.padding(vertical = 3.dp))
} }
if(VERSION.SDK_INT>=33&&isDeviceOwner(myDpm)){ if(VERSION.SDK_INT>=33&&(isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&myDpm.isOrganizationOwnedDeviceWithManagedProfile))){
Column(modifier = sections()){ Column(modifier = sections()){
var policy = myDpm.wifiSsidPolicy var policy = myDpm.wifiSsidPolicy
var selectedPolicyType by remember{mutableIntStateOf(policy?.policyType ?: -1)} var selectedPolicyType by remember{mutableIntStateOf(policy?.policyType ?: -1)}

View File

@@ -346,7 +346,7 @@ fun Password(){
Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show() Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show()
calculateCustomFeature() calculateCustomFeature()
}, },
enabled = isProfileOwner(myDpm)||isDeviceOwner(myDpm), enabled = isDeviceOwner(myDpm),
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = "应用") Text(text = "应用")

View File

@@ -314,7 +314,7 @@ fun DpmPermissions(navCtrl:NavHostController){
} }
} }
if(isDeviceOwner(myDpm)&&VERSION.SDK_INT>=24){ if((isDeviceOwner(myDpm)||isProfileOwner(myDpm))&&VERSION.SDK_INT>=24){
DeviceOwnerInfo(R.string.owner_lockscr_info,R.string.place_holder,R.string.owner_lockscr_info,focusManager,myContext, DeviceOwnerInfo(R.string.owner_lockscr_info,R.string.place_holder,R.string.owner_lockscr_info,focusManager,myContext,
{myDpm.deviceOwnerLockScreenInfo},{content -> myDpm.setDeviceOwnerLockScreenInfo(myComponent,content)}) {myDpm.deviceOwnerLockScreenInfo},{content -> myDpm.setDeviceOwnerLockScreenInfo(myComponent,content)})
DeviceOwnerInfo(R.string.support_msg,R.string.support_msg_desc,R.string.message,focusManager,myContext, DeviceOwnerInfo(R.string.support_msg,R.string.support_msg_desc,R.string.message,focusManager,myContext,