New user restrictions

Fix GitHub actions build.yml
This commit is contained in:
BinTianqi
2025-01-24 19:03:32 +08:00
parent 6893ef58aa
commit 4640f6d1f2
9 changed files with 130 additions and 121 deletions

View File

@@ -1,12 +1,18 @@
name: Build APK name: Build APK
on: on:
workflow_dispatch:
push: push:
branches: ["master", "dev"]
paths-ignore: paths-ignore:
- '**.md' - '**.md'
tags-ignore: tags-ignore:
- '**' - '**'
concurrency:
group: "main"
cancel-in-progress: false
jobs: jobs:
build: build:
name: Build name: Build
@@ -62,6 +68,7 @@ jobs:
upload-telegram: upload-telegram:
name: Upload Builds name: Upload Builds
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref_name == 'dev'
needs: build needs: build
steps: steps:
- name: Download Artifacts - name: Download Artifacts

View File

@@ -274,22 +274,22 @@ fun Home(activity: FragmentActivity, vm: MyViewModel) {
composable(route = "UserRestriction") { UserRestriction(navCtrl) } composable(route = "UserRestriction") { UserRestriction(navCtrl) }
composable(route = "UR-Internet") { composable(route = "UR-Internet") {
MyScaffold(R.string.network_and_internet, 0.dp, navCtrl) { RestrictionData.internet.forEach { UserRestrictionItem(it) } } MyScaffold(R.string.network_and_internet, 0.dp, navCtrl) { RestrictionData.internet.forEach { UserRestrictionItem(it, vm) } }
} }
composable(route = "UR-Connectivity") { composable(route = "UR-Connectivity") {
MyScaffold(R.string.connectivity, 0.dp, navCtrl) { RestrictionData.connectivity.forEach { UserRestrictionItem(it) } } MyScaffold(R.string.connectivity, 0.dp, navCtrl) { RestrictionData.connectivity.forEach { UserRestrictionItem(it, vm) } }
} }
composable(route = "UR-Applications") { composable(route = "UR-Applications") {
MyScaffold(R.string.applications, 0.dp, navCtrl) { RestrictionData.applications.forEach { UserRestrictionItem(it) } } MyScaffold(R.string.applications, 0.dp, navCtrl) { RestrictionData.applications.forEach { UserRestrictionItem(it, vm) } }
} }
composable(route = "UR-Users") { composable(route = "UR-Users") {
MyScaffold(R.string.users, 0.dp, navCtrl) { RestrictionData.users.forEach { UserRestrictionItem(it) } } MyScaffold(R.string.users, 0.dp, navCtrl) { RestrictionData.users.forEach { UserRestrictionItem(it, vm) } }
} }
composable(route = "UR-Media") { composable(route = "UR-Media") {
MyScaffold(R.string.media, 0.dp, navCtrl) { RestrictionData.media.forEach { UserRestrictionItem(it) } } MyScaffold(R.string.media, 0.dp, navCtrl) { RestrictionData.media.forEach { UserRestrictionItem(it, vm) } }
} }
composable(route = "UR-Other") { composable(route = "UR-Other") {
MyScaffold(R.string.other, 0.dp, navCtrl) { RestrictionData.other.forEach { UserRestrictionItem(it) } } MyScaffold(R.string.other, 0.dp, navCtrl) { RestrictionData.other.forEach { UserRestrictionItem(it, vm) } }
} }
composable(route = "Users") { Users(navCtrl) } composable(route = "Users") { Users(navCtrl) }

View File

@@ -2,6 +2,7 @@ package com.bintianqi.owndroid
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import android.os.Bundle
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@@ -11,6 +12,7 @@ class MyViewModel: ViewModel() {
val theme = MutableStateFlow(ThemeSettings()) val theme = MutableStateFlow(ThemeSettings())
val installedPackages = mutableListOf<PackageInfo>() val installedPackages = mutableListOf<PackageInfo>()
val selectedPackage = MutableStateFlow("") val selectedPackage = MutableStateFlow("")
val userRestrictions = MutableStateFlow(Bundle())
var initialized = false var initialized = false
fun initialize(context: Context) { fun initialize(context: Context) {

View File

@@ -11,11 +11,14 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import com.bintianqi.owndroid.MyViewModel
import com.bintianqi.owndroid.R import com.bintianqi.owndroid.R
import com.bintianqi.owndroid.ui.FunctionItem import com.bintianqi.owndroid.ui.FunctionItem
import com.bintianqi.owndroid.ui.MyScaffold import com.bintianqi.owndroid.ui.MyScaffold
@@ -24,7 +27,8 @@ import com.bintianqi.owndroid.ui.SwitchItem
data class Restriction( data class Restriction(
val id: String, val id: String,
@StringRes val name: Int, @StringRes val name: Int,
@DrawableRes val icon: Int @DrawableRes val icon: Int,
val requiresApi: Int = 0
) )
@Composable @Composable
@@ -50,21 +54,23 @@ fun UserRestriction(navCtrl:NavHostController) {
@RequiresApi(24) @RequiresApi(24)
@Composable @Composable
fun UserRestrictionItem(restriction: Restriction) { fun UserRestrictionItem(restriction: Restriction, vm: MyViewModel) {
val context = LocalContext.current val context = LocalContext.current
val dpm = context.getDPM() val userRestrictions by vm.userRestrictions.collectAsStateWithLifecycle()
val receiver = context.getReceiver()
Box(modifier = Modifier.padding(start = 22.dp, end = 16.dp)) { Box(modifier = Modifier.padding(start = 22.dp, end = 16.dp)) {
SwitchItem( SwitchItem(
restriction.name, restriction.id, restriction.icon, restriction.name, restriction.id, restriction.icon,
{ dpm.getUserRestrictions(receiver).getBoolean(restriction.id) }, userRestrictions.getBoolean(restriction.id),
{ {
val dpm = context.getDPM()
val receiver = context.getReceiver()
try { try {
if(it) { if(it) {
dpm.addUserRestriction(receiver, restriction.id) dpm.addUserRestriction(receiver, restriction.id)
} else { } else {
dpm.clearUserRestriction(receiver, restriction.id) dpm.clearUserRestriction(receiver, restriction.id)
} }
vm.userRestrictions.value = dpm.getUserRestrictions(receiver)
} catch(_: SecurityException) { } catch(_: SecurityException) {
if(context.isProfileOwner) { if(context.isProfileOwner) {
Toast.makeText(context, R.string.require_device_owner, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.require_device_owner, Toast.LENGTH_SHORT).show()
@@ -75,109 +81,84 @@ fun UserRestrictionItem(restriction: Restriction) {
} }
} }
@Suppress("InlinedApi")
object RestrictionData { object RestrictionData {
val internet: List<Restriction> get() { val internet = listOf(
val list = mutableListOf<Restriction>() Restriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, R.string.config_mobile_network, R.drawable.signal_cellular_alt_fill0),
list += Restriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, R.string.config_mobile_network, R.drawable.signal_cellular_alt_fill0) Restriction(UserManager.DISALLOW_CONFIG_WIFI, R.string.config_wifi, R.drawable.wifi_fill0),
list += Restriction(UserManager.DISALLOW_CONFIG_WIFI, R.string.config_wifi, R.drawable.wifi_fill0) Restriction(UserManager.DISALLOW_DATA_ROAMING, R.string.data_roaming, R.drawable.network_cell_fill0, 24),
if(VERSION.SDK_INT>=24) list += Restriction(UserManager.DISALLOW_DATA_ROAMING, R.string.data_roaming, R.drawable.network_cell_fill0) Restriction(UserManager.DISALLOW_CELLULAR_2G, R.string.cellular_2g, R.drawable.network_cell_fill0, 34),
if(VERSION.SDK_INT>=34) { Restriction(UserManager.DISALLOW_ULTRA_WIDEBAND_RADIO, R.string.ultra_wideband_radio, R.drawable.wifi_tethering_fill0, 34),
list += Restriction(UserManager.DISALLOW_CELLULAR_2G, R.string.cellular_2g, R.drawable.network_cell_fill0) Restriction(UserManager.DISALLOW_ADD_WIFI_CONFIG, R.string.add_wifi_conf, R.drawable.wifi_fill0, 33),
list += Restriction(UserManager.DISALLOW_ULTRA_WIDEBAND_RADIO, R.string.ultra_wideband_radio, R.drawable.wifi_tethering_fill0) Restriction(UserManager.DISALLOW_CHANGE_WIFI_STATE, R.string.change_wifi_state, R.drawable.wifi_fill0, 33),
} Restriction(UserManager.DISALLOW_WIFI_DIRECT, R.string.wifi_direct, R.drawable.wifi_tethering_fill0),
if(VERSION.SDK_INT>=33) { Restriction(UserManager.DISALLOW_WIFI_TETHERING, R.string.wifi_tethering, R.drawable.wifi_tethering_fill0, 33),
list += Restriction(UserManager.DISALLOW_ADD_WIFI_CONFIG, R.string.add_wifi_conf, R.drawable.wifi_fill0) Restriction(UserManager.DISALLOW_SHARING_ADMIN_CONFIGURED_WIFI, R.string.share_admin_wifi, R.drawable.share_fill0, 33),
list += Restriction(UserManager.DISALLOW_CHANGE_WIFI_STATE, R.string.change_wifi_state, R.drawable.wifi_fill0) Restriction(UserManager.DISALLOW_NETWORK_RESET, R.string.network_reset, R.drawable.reset_wrench_fill0, 23),
list += Restriction(UserManager.DISALLOW_WIFI_DIRECT, R.string.wifi_direct, R.drawable.wifi_tethering_fill0) Restriction(UserManager.DISALLOW_CONFIG_TETHERING, R.string.config_tethering, R.drawable.wifi_tethering_fill0),
list += Restriction(UserManager.DISALLOW_WIFI_TETHERING, R.string.wifi_tethering, R.drawable.wifi_tethering_fill0) Restriction(UserManager.DISALLOW_CONFIG_VPN, R.string.config_vpn, R.drawable.vpn_key_fill0),
list += Restriction(UserManager.DISALLOW_SHARING_ADMIN_CONFIGURED_WIFI, R.string.share_admin_wifi, R.drawable.share_fill0) Restriction(UserManager.DISALLOW_CONFIG_PRIVATE_DNS, R.string.config_private_dns, R.drawable.dns_fill0, 29),
} Restriction(UserManager.DISALLOW_AIRPLANE_MODE, R.string.airplane_mode, R.drawable.airplanemode_active_fill0, 28),
if(VERSION.SDK_INT>=23) list += Restriction(UserManager.DISALLOW_NETWORK_RESET, R.string.network_reset, R.drawable.reset_wrench_fill0) Restriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS, R.string.config_cell_broadcasts, R.drawable.cell_tower_fill0),
list += Restriction(UserManager.DISALLOW_CONFIG_TETHERING, R.string.config_tethering, R.drawable.wifi_tethering_fill0) Restriction(UserManager.DISALLOW_SMS, R.string.sms, R.drawable.sms_fill0),
list += Restriction(UserManager.DISALLOW_CONFIG_VPN, R.string.config_vpn, R.drawable.vpn_key_fill0) Restriction(UserManager.DISALLOW_OUTGOING_CALLS, R.string.outgoing_calls, R.drawable.phone_forwarded_fill0),
if(VERSION.SDK_INT>=29) list += Restriction(UserManager.DISALLOW_CONFIG_PRIVATE_DNS, R.string.config_private_dns, R.drawable.dns_fill0) Restriction(UserManager.DISALLOW_SIM_GLOBALLY, R.string.download_esim, R.drawable.sim_card_download_fill0)
if(VERSION.SDK_INT>=28) list += Restriction(UserManager.DISALLOW_AIRPLANE_MODE, R.string.airplane_mode, R.drawable.airplanemode_active_fill0) )
list += Restriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS, R.string.config_cell_broadcasts, R.drawable.cell_tower_fill0) val connectivity = listOf(
list += Restriction(UserManager.DISALLOW_SMS, R.string.sms, R.drawable.sms_fill0) Restriction(UserManager.DISALLOW_BLUETOOTH, R.string.bluetooth, R.drawable.bluetooth_fill0, 26),
list += Restriction(UserManager.DISALLOW_OUTGOING_CALLS, R.string.outgoing_calls, R.drawable.phone_forwarded_fill0) Restriction(UserManager.DISALLOW_BLUETOOTH_SHARING, R.string.bt_share, R.drawable.bluetooth_searching_fill0, 26),
return list Restriction(UserManager.DISALLOW_SHARE_LOCATION, R.string.share_location, R.drawable.location_on_fill0),
} Restriction(UserManager.DISALLOW_CONFIG_LOCATION, R.string.config_location, R.drawable.location_on_fill0, 28),
val connectivity: List<Restriction> get() { Restriction(UserManager.DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO, R.string.nfc, R.drawable.nfc_fill0, 35),
val list = mutableListOf<Restriction>() Restriction(UserManager.DISALLOW_OUTGOING_BEAM, R.string.outgoing_beam, R.drawable.nfc_fill0, 22),
if(VERSION.SDK_INT>=26) { Restriction(UserManager.DISALLOW_USB_FILE_TRANSFER, R.string.usb_file_transfer, R.drawable.usb_fill0),
list += Restriction(UserManager.DISALLOW_BLUETOOTH, R.string.bluetooth, R.drawable.bluetooth_fill0) Restriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA, R.string.mount_physical_media, R.drawable.sd_card_fill0),
list += Restriction(UserManager.DISALLOW_BLUETOOTH_SHARING, R.string.bt_share, R.drawable.bluetooth_searching_fill0) Restriction(UserManager.DISALLOW_PRINTING, R.string.printing, R.drawable.print_fill0, 28)
} )
list += Restriction(UserManager.DISALLOW_SHARE_LOCATION, R.string.share_location, R.drawable.location_on_fill0) val applications = listOf(
if(VERSION.SDK_INT>=28) list += Restriction(UserManager.DISALLOW_CONFIG_LOCATION, R.string.config_location, R.drawable.location_on_fill0) Restriction(UserManager.DISALLOW_INSTALL_APPS, R.string.install_app, R.drawable.android_fill0),
if(VERSION.SDK_INT>=22) list += Restriction(UserManager.DISALLOW_OUTGOING_BEAM, R.string.outgoing_beam, R.drawable.nfc_fill0) Restriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY, R.string.install_unknown_src_globally, R.drawable.android_fill0, 29),
list += Restriction(UserManager.DISALLOW_USB_FILE_TRANSFER, R.string.usb_file_transfer, R.drawable.usb_fill0) Restriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES, R.string.inst_unknown_src, R.drawable.android_fill0),
list += Restriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA, R.string.mount_physical_media, R.drawable.sd_card_fill0) Restriction(UserManager.DISALLOW_UNINSTALL_APPS, R.string.uninstall_app, R.drawable.delete_fill0),
if(VERSION.SDK_INT>=28) list += Restriction(UserManager.DISALLOW_PRINTING, R.string.printing, R.drawable.print_fill0) Restriction(UserManager.DISALLOW_APPS_CONTROL, R.string.apps_ctrl, R.drawable.apps_fill0),
return list Restriction(UserManager.DISALLOW_CONFIG_DEFAULT_APPS, R.string.config_default_apps, R.drawable.apps_fill0, 34)
} )
val applications: List<Restriction> get() { val media = listOf(
val list = mutableListOf<Restriction>() Restriction(UserManager.DISALLOW_CONFIG_BRIGHTNESS, R.string.config_brightness, R.drawable.brightness_5_fill0, 28),
list += Restriction(UserManager.DISALLOW_INSTALL_APPS, R.string.install_app, R.drawable.android_fill0) Restriction(UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT, R.string.config_scr_timeout, R.drawable.screen_lock_portrait_fill0, 28),
if(VERSION.SDK_INT>=29) list += Restriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY, R.string.install_unknown_src_globally, R.drawable.android_fill0) Restriction(UserManager.DISALLOW_AMBIENT_DISPLAY, R.string.ambient_display, R.drawable.brightness_5_fill0, 28),
list += Restriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES, R.string.inst_unknown_src, R.drawable.android_fill0) Restriction(UserManager.DISALLOW_ADJUST_VOLUME, R.string.adjust_volume, R.drawable.volume_up_fill0),
list += Restriction(UserManager.DISALLOW_UNINSTALL_APPS, R.string.uninstall_app, R.drawable.delete_fill0) Restriction(UserManager.DISALLOW_UNMUTE_MICROPHONE, R.string.unmute_microphone, R.drawable.mic_fill0),
list += Restriction(UserManager.DISALLOW_APPS_CONTROL, R.string.apps_ctrl, R.drawable.apps_fill0) Restriction(UserManager.DISALLOW_CAMERA_TOGGLE, R.string.camera_toggle, R.drawable.cameraswitch_fill0, 31),
if(VERSION.SDK_INT>=34) list += Restriction(UserManager.DISALLOW_CONFIG_DEFAULT_APPS, R.string.config_default_apps, R.drawable.apps_fill0) Restriction(UserManager.DISALLOW_MICROPHONE_TOGGLE, R.string.microphone_toggle, R.drawable.mic_fill0, 31)
return list )
} val users = listOf(
val media: List<Restriction> get() { Restriction(UserManager.DISALLOW_ADD_USER, R.string.add_user, R.drawable.account_circle_fill0),
val list = mutableListOf<Restriction>() Restriction(UserManager.DISALLOW_REMOVE_USER, R.string.remove_user, R.drawable.account_circle_fill0),
if(VERSION.SDK_INT>=28) { Restriction(UserManager.DISALLOW_USER_SWITCH, R.string.switch_user, R.drawable.account_circle_fill0, 28),
list += Restriction(UserManager.DISALLOW_CONFIG_BRIGHTNESS, R.string.config_brightness, R.drawable.brightness_5_fill0) Restriction(UserManager.DISALLOW_ADD_PRIVATE_PROFILE, R.string.create_private_space, R.drawable.lock_fill0, 35),
list += Restriction(UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT, R.string.config_scr_timeout, R.drawable.screen_lock_portrait_fill0) Restriction(UserManager.DISALLOW_SET_USER_ICON, R.string.set_user_icon, R.drawable.account_circle_fill0, 24),
list += Restriction(UserManager.DISALLOW_AMBIENT_DISPLAY, R.string.ambient_display, R.drawable.brightness_5_fill0) Restriction(UserManager.DISALLOW_CROSS_PROFILE_COPY_PASTE, R.string.cross_profile_copy, R.drawable.content_paste_fill0),
} Restriction(UserManager.DISALLOW_SHARE_INTO_MANAGED_PROFILE, R.string.share_into_managed_profile, R.drawable.share_fill0, 28),
list += Restriction(UserManager.DISALLOW_ADJUST_VOLUME, R.string.adjust_volume, R.drawable.volume_up_fill0) Restriction(UserManager.DISALLOW_UNIFIED_PASSWORD, R.string.unified_pwd, R.drawable.work_fill0, 28)
list += Restriction(UserManager.DISALLOW_UNMUTE_MICROPHONE, R.string.unmute_microphone, R.drawable.mic_fill0) )
if(VERSION.SDK_INT>=31) { val other = listOf(
list += Restriction(UserManager.DISALLOW_CAMERA_TOGGLE, R.string.camera_toggle, R.drawable.cameraswitch_fill0) Restriction(UserManager.DISALLOW_AUTOFILL, R.string.autofill, R.drawable.password_fill0, 26),
list += Restriction(UserManager.DISALLOW_MICROPHONE_TOGGLE, R.string.microphone_toggle, R.drawable.mic_fill0) Restriction(UserManager.DISALLOW_CONFIG_CREDENTIALS, R.string.config_credentials, R.drawable.android_fill0),
} Restriction(UserManager.DISALLOW_CONTENT_CAPTURE, R.string.content_capture, R.drawable.screenshot_fill0, 29),
return list Restriction(UserManager.DISALLOW_CONTENT_SUGGESTIONS, R.string.content_suggestions, R.drawable.sms_fill0, 29),
} Restriction(UserManager.DISALLOW_ASSIST_CONTENT, R.string.assist_content, R.drawable.info_fill0, 35),
val users: List<Restriction> get() { Restriction(UserManager.DISALLOW_CREATE_WINDOWS, R.string.create_windows, R.drawable.web_asset),
val list = mutableListOf<Restriction>() Restriction(UserManager.DISALLOW_SET_WALLPAPER, R.string.set_wallpaper, R.drawable.wallpaper_fill0, 24),
list += Restriction(UserManager.DISALLOW_ADD_USER, R.string.add_user, R.drawable.account_circle_fill0) Restriction(UserManager.DISALLOW_GRANT_ADMIN, R.string.grant_admin, R.drawable.security_fill0, 34),
list += Restriction(UserManager.DISALLOW_REMOVE_USER, R.string.remove_user, R.drawable.account_circle_fill0) Restriction(UserManager.DISALLOW_FUN, R.string.`fun`, R.drawable.stadia_controller_fill0, 23),
if(VERSION.SDK_INT>=28) list += Restriction(UserManager.DISALLOW_USER_SWITCH, R.string.switch_user, R.drawable.account_circle_fill0) Restriction(UserManager.DISALLOW_MODIFY_ACCOUNTS, R.string.modify_accounts, R.drawable.manage_accounts_fill0),
if(VERSION.SDK_INT>=24) list += Restriction(UserManager.DISALLOW_SET_USER_ICON, R.string.set_user_icon, R.drawable.account_circle_fill0) Restriction(UserManager.DISALLOW_CONFIG_LOCALE, R.string.config_locale, R.drawable.language_fill0, 28),
list += Restriction(UserManager.DISALLOW_CROSS_PROFILE_COPY_PASTE, R.string.cross_profile_copy, R.drawable.content_paste_fill0) Restriction(UserManager.DISALLOW_CONFIG_DATE_TIME, R.string.config_date_time, R.drawable.schedule_fill0, 28),
if(VERSION.SDK_INT>=28) { Restriction(UserManager.DISALLOW_SYSTEM_ERROR_DIALOGS, R.string.sys_err_dialog, R.drawable.warning_fill0, 28),
list += Restriction(UserManager.DISALLOW_SHARE_INTO_MANAGED_PROFILE, R.string.share_into_managed_profile, R.drawable.share_fill0) Restriction(UserManager.DISALLOW_FACTORY_RESET, R.string.factory_reset, R.drawable.android_fill0),
list += Restriction(UserManager.DISALLOW_UNIFIED_PASSWORD, R.string.unified_pwd, R.drawable.work_fill0) Restriction(UserManager.DISALLOW_SAFE_BOOT, R.string.safe_boot, R.drawable.security_fill0, 23),
} Restriction(UserManager.DISALLOW_DEBUGGING_FEATURES, R.string.debug_features, R.drawable.adb_fill0)
return list )
} fun getAllRestrictions() = internet + connectivity + media + applications + users + other
val other: List<Restriction> get() {
val list = mutableListOf<Restriction>()
if(VERSION.SDK_INT>=26) list += Restriction(UserManager.DISALLOW_AUTOFILL, R.string.autofill, R.drawable.password_fill0)
list += Restriction(UserManager.DISALLOW_CONFIG_CREDENTIALS, R.string.config_credentials, R.drawable.android_fill0)
if(VERSION.SDK_INT>=29) {
list += Restriction(UserManager.DISALLOW_CONTENT_CAPTURE, R.string.content_capture, R.drawable.screenshot_fill0)
list += Restriction(UserManager.DISALLOW_CONTENT_SUGGESTIONS, R.string.content_suggestions, R.drawable.sms_fill0)
}
list += Restriction(UserManager.DISALLOW_CREATE_WINDOWS, R.string.create_windows, R.drawable.web_asset)
if(VERSION.SDK_INT>=24) list += Restriction(UserManager.DISALLOW_SET_WALLPAPER, R.string.set_wallpaper, R.drawable.wallpaper_fill0)
if(VERSION.SDK_INT>=34) list += Restriction(UserManager.DISALLOW_GRANT_ADMIN, R.string.grant_admin, R.drawable.security_fill0)
if(VERSION.SDK_INT>=23) list += Restriction(UserManager.DISALLOW_FUN, R.string.`fun`, R.drawable.stadia_controller_fill0)
list += Restriction(UserManager.DISALLOW_MODIFY_ACCOUNTS, R.string.modify_accounts, R.drawable.manage_accounts_fill0)
if(VERSION.SDK_INT>=28) {
list += Restriction(UserManager.DISALLOW_CONFIG_LOCALE, R.string.config_locale, R.drawable.language_fill0)
list += Restriction(UserManager.DISALLOW_CONFIG_DATE_TIME, R.string.config_date_time, R.drawable.schedule_fill0)
}
if(VERSION.SDK_INT>=28) list += Restriction(UserManager.DISALLOW_SYSTEM_ERROR_DIALOGS, R.string.sys_err_dialog, R.drawable.warning_fill0)
list += Restriction(UserManager.DISALLOW_FACTORY_RESET, R.string.factory_reset, R.drawable.android_fill0)
if(VERSION.SDK_INT>=23) list += Restriction(UserManager.DISALLOW_SAFE_BOOT, R.string.safe_boot, R.drawable.security_fill0)
list += Restriction(UserManager.DISALLOW_DEBUGGING_FEATURES, R.string.debug_features, R.drawable.adb_fill0)
return list
}
fun getAllRestrictions(): List<Restriction> =
internet + connectivity + media + applications + users + other
} }

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:pathData="m480,680 l160,-160 -56,-56 -64,62v-166h-80v166l-64,-62 -56,56 160,160ZM240,880q-33,0 -56.5,-23.5T160,800v-480l240,-240h320q33,0 56.5,23.5T800,160v640q0,33 -23.5,56.5T720,880L240,880ZM240,800h480v-640L434,160L240,354v446ZM240,800h480,-480Z"
android:fillColor="#000000"/>
</vector>

View File

@@ -90,7 +90,6 @@
<string name="add_delegated_admin">Add delegated admin</string> <string name="add_delegated_admin">Add delegated admin</string>
<string name="dhizuku_will_be_deactivated">Dhizuku будет деактивирован</string> <string name="dhizuku_will_be_deactivated">Dhizuku будет деактивирован</string>
<string name="reset_device_policy">Сбросить политику устройства</string> <string name="reset_device_policy">Сбросить политику устройства</string>
<string name="activate_device_admin">Активировать администратора устройства</string>
<string name="device_info">Информация об устройстве</string> <string name="device_info">Информация об устройстве</string>
<string name="support_device_id_attestation">Поддержка аттестации идентификатора устройства</string> <string name="support_device_id_attestation">Поддержка аттестации идентификатора устройства</string>
<string name="support_unique_device_attestation">Поддержка аттестации уникального устройства</string> <string name="support_unique_device_attestation">Поддержка аттестации уникального устройства</string>
@@ -133,7 +132,6 @@
<string name="shizuku_not_started">Shizuku не запущен. </string> <string name="shizuku_not_started">Shizuku не запущен. </string>
<string name="activate_device_owner">Активировать владельца устройства</string> <string name="activate_device_owner">Активировать владельца устройства</string>
<string name="activate_org_profile">Активировать рабочий профиль, принадлежащий организации</string> <string name="activate_org_profile">Активировать рабочий профиль, принадлежащий организации</string>
<string name="shizuku_service_disconnected">Служба Shizuku отключена</string>
<string name="accounts">Accounts</string> <!--TODO--> <string name="accounts">Accounts</string> <!--TODO-->
<!--Системные--> <!--Системные-->
@@ -463,6 +461,7 @@
<string name="config_cell_broadcasts">Настроить сотовые оповещения</string> <string name="config_cell_broadcasts">Настроить сотовые оповещения</string>
<string name="sms">SMS</string> <string name="sms">SMS</string>
<string name="outgoing_calls">Исходящие вызовы</string> <string name="outgoing_calls">Исходящие вызовы</string>
<string name="download_esim">Download eSIM</string> <!--TODO-->
<string name="bluetooth">Bluetooth</string> <string name="bluetooth">Bluetooth</string>
<string name="bt_share">Обмен данными по Bluetooth</string> <string name="bt_share">Обмен данными по Bluetooth</string>
@@ -489,6 +488,7 @@
<string name="add_user">Добавить пользователя</string> <string name="add_user">Добавить пользователя</string>
<string name="remove_user">Удалить пользователя</string> <string name="remove_user">Удалить пользователя</string>
<string name="switch_user">Переключить пользователя</string> <string name="switch_user">Переключить пользователя</string>
<string name="create_private_space">Create private space</string> <!--TODO-->
<string name="set_user_icon">Установить значок пользователя</string> <string name="set_user_icon">Установить значок пользователя</string>
<string name="cross_profile_copy">Копирование между профилями</string> <string name="cross_profile_copy">Копирование между профилями</string>
<string name="share_into_managed_profile">Поделиться в управляемом профиле</string> <string name="share_into_managed_profile">Поделиться в управляемом профиле</string>
@@ -498,6 +498,7 @@
<string name="config_credentials">Настроить учетные данные</string> <string name="config_credentials">Настроить учетные данные</string>
<string name="content_capture">Захват контента</string> <string name="content_capture">Захват контента</string>
<string name="content_suggestions">Рекомендации по контенту</string> <string name="content_suggestions">Рекомендации по контенту</string>
<string name="assist_content">Assist content</string> <!--TODO-->
<string name="create_windows">Создать окна</string> <string name="create_windows">Создать окна</string>
<string name="set_wallpaper">Установить обои</string> <string name="set_wallpaper">Установить обои</string>
<string name="grant_admin">Предоставить права администратора</string> <string name="grant_admin">Предоставить права администратора</string>
@@ -626,6 +627,7 @@
<string name="authenticate">Аутентифицировать</string> <string name="authenticate">Аутентифицировать</string>
<string name="lock_in_background">Блокировать при переключении в фоновый режим</string> <string name="lock_in_background">Блокировать при переключении в фоновый режим</string>
<string name="clear_storage">Очистить хранилище</string> <string name="clear_storage">Очистить хранилище</string>
<string name="skipped_authentication">Skipped authentication because it is unavailable.</string> <!--TODO-->
<!--TODO--> <!--TODO-->
<string name="api_key">API key</string> <string name="api_key">API key</string>

View File

@@ -90,7 +90,6 @@
<string name="add_delegated_admin">Add delegated admin</string> <string name="add_delegated_admin">Add delegated admin</string>
<string name="dhizuku_will_be_deactivated">Dhizuku will be deactivated</string> <!--TODO--> <string name="dhizuku_will_be_deactivated">Dhizuku will be deactivated</string> <!--TODO-->
<string name="reset_device_policy">Reset device policy</string> <!--TODO--> <string name="reset_device_policy">Reset device policy</string> <!--TODO-->
<string name="activate_device_admin">Cihaz Yöneticisini Etkinleştir</string>
<string name="device_info">Cihaz Bilgisi</string> <string name="device_info">Cihaz Bilgisi</string>
<string name="support_device_id_attestation">Cihaz Kimliği Doğrulama Desteği</string> <string name="support_device_id_attestation">Cihaz Kimliği Doğrulama Desteği</string>
<string name="support_unique_device_attestation">Benzersiz Cihaz Doğrulama Desteği</string> <string name="support_unique_device_attestation">Benzersiz Cihaz Doğrulama Desteği</string>
@@ -135,7 +134,6 @@
<string name="shizuku_not_started">Shizuku Başlatılmadı. </string> <string name="shizuku_not_started">Shizuku Başlatılmadı. </string>
<string name="activate_device_owner">Cihaz Sahibini Etkinleştir</string> <string name="activate_device_owner">Cihaz Sahibini Etkinleştir</string>
<string name="activate_org_profile">Kuruluş Profili Sahibini Etkinleştir</string> <string name="activate_org_profile">Kuruluş Profili Sahibini Etkinleştir</string>
<string name="shizuku_service_disconnected">Shizuku Hizmeti Bağlantısı Kesildi</string>
<string name="accounts">Accounts</string> <!--TODO--> <string name="accounts">Accounts</string> <!--TODO-->
<!--System--> <!--System-->
@@ -463,6 +461,7 @@
<string name="config_cell_broadcasts">Hücre yayınlarını yapılandır</string> <string name="config_cell_broadcasts">Hücre yayınlarını yapılandır</string>
<string name="sms">SMS</string> <string name="sms">SMS</string>
<string name="outgoing_calls">Giden aramalar</string> <string name="outgoing_calls">Giden aramalar</string>
<string name="download_esim">Download eSIM</string> <!--TODO-->
<string name="bluetooth">Bluetooth</string> <string name="bluetooth">Bluetooth</string>
<string name="bt_share">Bluetooth paylaşımı</string> <string name="bt_share">Bluetooth paylaşımı</string>
@@ -489,6 +488,7 @@
<string name="add_user">Kullanıcı ekle</string> <string name="add_user">Kullanıcı ekle</string>
<string name="remove_user">Kullanıcıyı kaldır</string> <string name="remove_user">Kullanıcıyı kaldır</string>
<string name="switch_user">Kullanıcıyı değiştir</string> <string name="switch_user">Kullanıcıyı değiştir</string>
<string name="create_private_space">Create private space</string> <!--TODO-->
<string name="set_user_icon">Kullanıcı simgesini ayarla</string> <string name="set_user_icon">Kullanıcı simgesini ayarla</string>
<string name="cross_profile_copy">Profil geçişli kopyalama</string> <string name="cross_profile_copy">Profil geçişli kopyalama</string>
<string name="share_into_managed_profile">Yönetilen profile paylaş</string> <string name="share_into_managed_profile">Yönetilen profile paylaş</string>
@@ -498,6 +498,7 @@
<string name="config_credentials">Kimlik bilgilerini yapılandır</string> <string name="config_credentials">Kimlik bilgilerini yapılandır</string>
<string name="content_capture">İçerik yakalama</string> <string name="content_capture">İçerik yakalama</string>
<string name="content_suggestions">İçerik önerileri</string> <string name="content_suggestions">İçerik önerileri</string>
<string name="assist_content">Assist content</string> <!--TODO-->
<string name="create_windows">Pencere oluştur</string> <string name="create_windows">Pencere oluştur</string>
<string name="set_wallpaper">Duvar kağıdı ayarla</string> <string name="set_wallpaper">Duvar kağıdı ayarla</string>
<string name="grant_admin">Cihaz yöneticisi yetkisi ver</string> <string name="grant_admin">Cihaz yöneticisi yetkisi ver</string>
@@ -622,6 +623,7 @@
<string name="authenticate">Doğrula</string> <string name="authenticate">Doğrula</string>
<string name="lock_in_background">Arka plana geçince kilitle</string> <string name="lock_in_background">Arka plana geçince kilitle</string>
<string name="clear_storage">Depolamayı temizle</string> <string name="clear_storage">Depolamayı temizle</string>
<string name="skipped_authentication">Skipped authentication because it is unavailable.</string> <!--TODO-->
<!--TODO--> <!--TODO-->
<string name="api_key">API key</string> <string name="api_key">API key</string>

View File

@@ -85,7 +85,6 @@
<string name="add_delegated_admin">添加委托管理员</string> <string name="add_delegated_admin">添加委托管理员</string>
<string name="reset_device_policy">重置设备策略</string> <string name="reset_device_policy">重置设备策略</string>
<string name="dhizuku_will_be_deactivated">Dhizuku将被停用</string> <string name="dhizuku_will_be_deactivated">Dhizuku将被停用</string>
<string name="activate_device_admin">激活Device admin</string>
<string name="device_info">设备信息</string> <string name="device_info">设备信息</string>
<string name="support_device_id_attestation">支持设备ID认证</string> <string name="support_device_id_attestation">支持设备ID认证</string>
<string name="support_unique_device_attestation">支持唯一设备认证</string> <string name="support_unique_device_attestation">支持唯一设备认证</string>
@@ -128,7 +127,6 @@
<string name="shizuku_not_started">服务未启动</string> <string name="shizuku_not_started">服务未启动</string>
<string name="activate_device_owner">激活Device owner</string> <string name="activate_device_owner">激活Device owner</string>
<string name="activate_org_profile">激活由组织拥有的工作资料</string> <string name="activate_org_profile">激活由组织拥有的工作资料</string>
<string name="shizuku_service_disconnected">Shizuku服务断开连接</string>
<string name="accounts">账号</string> <string name="accounts">账号</string>
<!--System--> <!--System-->
@@ -449,6 +447,7 @@
<string name="config_cell_broadcasts">配置小区广播</string> <string name="config_cell_broadcasts">配置小区广播</string>
<string name="sms">短信</string> <string name="sms">短信</string>
<string name="outgoing_calls">拨出电话</string> <string name="outgoing_calls">拨出电话</string>
<string name="download_esim">下载eSIM</string>
<string name="bluetooth">蓝牙</string> <string name="bluetooth">蓝牙</string>
<string name="bt_share">蓝牙分享</string> <string name="bt_share">蓝牙分享</string>
@@ -475,6 +474,7 @@
<string name="add_user">添加用户</string> <string name="add_user">添加用户</string>
<string name="remove_user">移除用户</string> <string name="remove_user">移除用户</string>
<string name="switch_user">切换用户</string> <string name="switch_user">切换用户</string>
<string name="create_private_space">创建私密空间</string>
<string name="set_user_icon">修改用户头像</string> <string name="set_user_icon">修改用户头像</string>
<string name="cross_profile_copy">跨用户复制</string> <string name="cross_profile_copy">跨用户复制</string>
<string name="share_into_managed_profile">分享至工作应用</string> <string name="share_into_managed_profile">分享至工作应用</string>
@@ -484,6 +484,7 @@
<string name="config_credentials">配置凭据</string> <string name="config_credentials">配置凭据</string>
<string name="content_capture">内容捕获</string> <string name="content_capture">内容捕获</string>
<string name="content_suggestions">内容建议</string> <string name="content_suggestions">内容建议</string>
<string name="assist_content">辅助内容</string>
<string name="create_windows">创建窗口</string> <string name="create_windows">创建窗口</string>
<string name="set_wallpaper">更换壁纸</string> <string name="set_wallpaper">更换壁纸</string>
<string name="grant_admin">启用设备管理器</string> <string name="grant_admin">启用设备管理器</string>
@@ -608,6 +609,7 @@
<string name="authenticate">验证</string> <string name="authenticate">验证</string>
<string name="lock_in_background">处于后台时锁定</string> <string name="lock_in_background">处于后台时锁定</string>
<string name="clear_storage">清除存储空间</string> <string name="clear_storage">清除存储空间</string>
<string name="skipped_authentication">验证已跳过,因为不可用</string>
<string name="api_key">API密钥</string> <string name="api_key">API密钥</string>
<string name="api_key_exist">API密钥已存在设置新的密钥将会覆盖当前密钥</string> <string name="api_key_exist">API密钥已存在设置新的密钥将会覆盖当前密钥</string>

View File

@@ -484,11 +484,13 @@
<string name="config_cell_broadcasts">Configure cell broadcasts</string> <string name="config_cell_broadcasts">Configure cell broadcasts</string>
<string name="sms">SMS</string> <string name="sms">SMS</string>
<string name="outgoing_calls">Outgoing calls</string> <string name="outgoing_calls">Outgoing calls</string>
<string name="download_esim">Download eSIM</string>
<string name="bluetooth">Bluetooth</string> <string name="bluetooth">Bluetooth</string>
<string name="bt_share">Bluetooth sharing</string> <string name="bt_share">Bluetooth sharing</string>
<string name="share_location">Share location</string> <string name="share_location">Share location</string>
<string name="config_location">Configure location</string> <string name="config_location">Configure location</string>
<string name="nfc" translatable="false">NFC</string>
<string name="outgoing_beam">Outgoing Beam</string> <string name="outgoing_beam">Outgoing Beam</string>
<string name="usb_file_transfer">USB file transfer</string> <string name="usb_file_transfer">USB file transfer</string>
<string name="mount_physical_media">Mount physical media</string> <string name="mount_physical_media">Mount physical media</string>
@@ -510,6 +512,7 @@
<string name="add_user">Add user</string> <string name="add_user">Add user</string>
<string name="remove_user">Remove user</string> <string name="remove_user">Remove user</string>
<string name="switch_user">Switch user</string> <string name="switch_user">Switch user</string>
<string name="create_private_space">Create private space</string>
<string name="set_user_icon">Set user icon</string> <string name="set_user_icon">Set user icon</string>
<string name="cross_profile_copy">Cross profile copy</string> <string name="cross_profile_copy">Cross profile copy</string>
<string name="share_into_managed_profile">Share into managed profile</string> <string name="share_into_managed_profile">Share into managed profile</string>
@@ -519,6 +522,7 @@
<string name="config_credentials">Configure credentials</string> <string name="config_credentials">Configure credentials</string>
<string name="content_capture">Content capture</string> <string name="content_capture">Content capture</string>
<string name="content_suggestions">Content suggestions</string> <string name="content_suggestions">Content suggestions</string>
<string name="assist_content">Assist content</string>
<string name="create_windows">Create windows</string> <string name="create_windows">Create windows</string>
<string name="set_wallpaper">Set wallpaper</string> <string name="set_wallpaper">Set wallpaper</string>
<string name="grant_admin">Grant device admin</string> <string name="grant_admin">Grant device admin</string>