diff --git a/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt b/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt index 4a37ad5..e0b86fc 100644 --- a/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt +++ b/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt @@ -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){ diff --git a/app/src/main/java/com/binbin/androidowner/DeviceControl.kt b/app/src/main/java/com/binbin/androidowner/DeviceControl.kt index c6e995b..c9c755b 100644 --- a/app/src/main/java/com/binbin/androidowner/DeviceControl.kt +++ b/app/src/main/java/com/binbin/androidowner/DeviceControl.kt @@ -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 diff --git a/app/src/main/java/com/binbin/androidowner/MainActivity.kt b/app/src/main/java/com/binbin/androidowner/MainActivity.kt index 561c331..bdaf879 100644 --- a/app/src/main/java/com/binbin/androidowner/MainActivity.kt +++ b/app/src/main/java/com/binbin/androidowner/MainActivity.kt @@ -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)}) } } } diff --git a/app/src/main/java/com/binbin/androidowner/UserRestrict.kt b/app/src/main/java/com/binbin/androidowner/UserRestrict.kt index 6d4581a..a6c154a 100644 --- a/app/src/main/java/com/binbin/androidowner/UserRestrict.kt +++ b/app/src/main/java/com/binbin/androidowner/UserRestrict.kt @@ -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)) } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c70dd2..711a514 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,13 @@ Android Owner + 蓝牙 + 飞行模式(需安卓9) + 配置Wi-Fi + 调试功能 + 配置位置信息(需安卓9) + 配置移动数据 + 创建窗口 + 允许 + 禁止 + 是否禁止: \ No newline at end of file