Simplified UserRestriction

This commit is contained in:
BinTianqi
2024-01-14 12:41:23 +08:00
parent 51a21dd345
commit 258114a068
5 changed files with 43 additions and 69 deletions

View File

@@ -2,7 +2,6 @@ package com.binbin.androidowner
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.content.pm.PackageManager
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Button
import androidx.compose.material3.Text
@@ -12,7 +11,6 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import com.binbin.androidowner.ui.theme.AndroidOwnerTheme
@Composable
fun ApplicationManage(myDpm:DevicePolicyManager, myComponent:ComponentName){

View File

@@ -2,7 +2,6 @@ package com.binbin.androidowner
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.os.UserManager
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Column

View File

@@ -4,11 +4,8 @@ import android.annotation.SuppressLint
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.os.Bundle
import android.os.UserManager
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
@@ -18,9 +15,7 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.navigation.NavHost
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
@@ -63,7 +58,7 @@ fun MyScaffold(mainDpm:DevicePolicyManager, mainComponent:ComponentName){
composable(route = "Permissions", content = { DpmPermissions(mainDpm,mainComponent)})
composable(route = "UIControl", content = { UIControl(mainDpm,mainComponent)})
composable(route = "ApplicationManage", content = { ApplicationManage(mainDpm,mainComponent)})
composable(route = "UserRestriction", content = { UserRestrict(mainDpm,mainComponent)})
composable(route = "UserRestriction", content = { UserRestriction(mainDpm,mainComponent)})
}
}
}

View File

@@ -1,75 +1,47 @@
package com.binbin.androidowner
import android.annotation.SuppressLint
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.os.UserManager
import android.util.Log
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateMapOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@SuppressLint("UnrememberedMutableState")
@Composable
fun UserRestrict(myDpm: DevicePolicyManager, myComponent: ComponentName){
Column {
val strictState = myDpm.getUserRestrictions(myComponent)
for (key in strictState.keySet()) {
val value = when (strictState[key]) {
is Boolean -> if (strictState.getBoolean(key)) "true" else "false"
else -> ""
}
//println("Key: $key, Value: $value")
Log.e(">>>>>>>>>>>","Key: $key, Value: $value")
fun UserRestriction(myDpm: DevicePolicyManager, myComponent: ComponentName){
val verticalScrolling = rememberScrollState()
Column(modifier = Modifier.verticalScroll(verticalScrolling)) {
UserRestrictionItem(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS,R.string.config_mobile_network,myComponent, myDpm)
UserRestrictionItem(UserManager.DISALLOW_CONFIG_WIFI,R.string.config_wifi,myComponent, myDpm)
UserRestrictionItem(UserManager.DISALLOW_BLUETOOTH,R.string.bluetooth,myComponent, myDpm)
UserRestrictionItem(UserManager.DISALLOW_AIRPLANE_MODE,R.string.airplane_mode,myComponent, myDpm)
UserRestrictionItem(UserManager.DISALLOW_CONFIG_LOCATION,R.string.config_location,myComponent, myDpm)
UserRestrictionItem(UserManager.DISALLOW_DEBUGGING_FEATURES,R.string.debug_features,myComponent, myDpm)
UserRestrictionItem(UserManager.DISALLOW_CREATE_WINDOWS,R.string.create_windows,myComponent, myDpm)
}
}
@Composable
private fun UserRestrictionItem(restriction:String, itemName:Int, myComponent: ComponentName, myDpm: DevicePolicyManager){
val strictState = myDpm.getUserRestrictions(myComponent)
val currentState = stringResource(R.string.is_disallow)+strictState.getBoolean("no_create_windows").toString()
Column{
Text(
text = stringResource(itemName),
style = MaterialTheme.typography.headlineSmall
)
Text(text = currentState)
Button(onClick = {myDpm.clearUserRestriction(myComponent,restriction)}) {
Text(stringResource(R.string.disallow))
}
Text("限制蓝牙:${strictState.getBoolean("no_bluetooth")}")
Button(onClick = {myDpm.addUserRestriction(myComponent, UserManager.DISALLOW_BLUETOOTH)}) {
Text("禁用蓝牙")
}
Button(onClick = {myDpm.clearUserRestriction(myComponent, UserManager.DISALLOW_BLUETOOTH)}) {
Text("允许蓝牙")
}
Text("限制Wi-Fi${strictState.getBoolean("no_config_wifi")}")
Button(onClick = {myDpm.addUserRestriction(myComponent, UserManager.DISALLOW_CONFIG_WIFI)}) {
Text("禁用Wi-Fi")
}
Button(onClick = {myDpm.clearUserRestriction(myComponent, UserManager.DISALLOW_CONFIG_WIFI)}) {
Text("允许Wi-Fi")
}
Text("限制调试:${strictState.getBoolean("no_debug_features")}")
Button(onClick = {myDpm.addUserRestriction(myComponent, UserManager.DISALLOW_DEBUGGING_FEATURES)}) {
Text("禁用调试")
}
Button(onClick = {myDpm.clearUserRestriction(myComponent, UserManager.DISALLOW_DEBUGGING_FEATURES)}) {
Text("允许调试")
}
Text("限制定位:${strictState.getBoolean("no_config_location")}")
Button(onClick = {myDpm.addUserRestriction(myComponent, UserManager.DISALLOW_CONFIG_LOCATION)}) {
Text("禁用定位需安卓9")
}
Button(onClick = {myDpm.clearUserRestriction(myComponent, UserManager.DISALLOW_CONFIG_LOCATION)}) {
Text("允许定位需安卓9")
}
Text("限制移动数据:${strictState.getBoolean("no_config_mobile_network")}")
Button(onClick = {myDpm.addUserRestriction(myComponent, UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)}) {
Text("禁用移动数据")
}
Button(onClick = {myDpm.clearUserRestriction(myComponent, UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)}) {
Text("允许移动数据")
}
Text("限制弹窗:${strictState.getBoolean("no_create_windows")}")
Text("弹窗包括toast、通知和应用的“显示在其他应用上层”")
Button(onClick = {myDpm.addUserRestriction(myComponent, UserManager.DISALLOW_CREATE_WINDOWS)}) {
Text("禁止弹窗")
}
Button(onClick = {myDpm.clearUserRestriction(myComponent, UserManager.DISALLOW_CREATE_WINDOWS)}) {
Text("允许弹窗")
Button(onClick = {myDpm.addUserRestriction(myComponent,restriction)}) {
Text(text = stringResource(R.string.allow))
}
}
}

View File

@@ -1,3 +1,13 @@
<resources>
<string name="app_name">Android Owner</string>
<string name="bluetooth">蓝牙</string>
<string name="airplane_mode">飞行模式需安卓9</string>
<string name="config_wifi">配置Wi-Fi</string>
<string name="debug_features">调试功能</string>
<string name="config_location">配置位置信息需安卓9</string>
<string name="config_mobile_network">配置移动数据</string>
<string name="create_windows">创建窗口</string>
<string name="allow">允许</string>
<string name="disallow">禁止</string>
<string name="is_disallow">是否禁止:</string>
</resources>