From 30049f3e6c8d2d7bf6a59aaba1d93af966cdc9c3 Mon Sep 17 00:00:00 2001 From: BinTianqi <1220958406@qq.com> Date: Mon, 15 Apr 2024 21:25:47 +0800 Subject: [PATCH] Add Enlish locale Use English as the default language. There may be problems with English formatting. My English skills are not very good, please correct my wrong translations. --- Guide.md | 4 +- .../com/binbin/androidowner/MainActivity.kt | 6 +- .../androidowner/dpm/ApplicationManage.kt | 4 +- .../binbin/androidowner/dpm/ManagedProfile.kt | 2 +- .../com/binbin/androidowner/dpm/Password.kt | 4 - .../binbin/androidowner/dpm/Permissions.kt | 12 +- .../androidowner/dpm/ShizukuActivate.kt | 9 +- .../binbin/androidowner/dpm/SystemManage.kt | 10 +- .../com/binbin/androidowner/dpm/UserManage.kt | 8 +- .../androidowner/dpm/UserRestriction.kt | 2 +- app/src/main/res/resources.properties | 2 +- app/src/main/res/values-zh/strings.xml | 489 +++++++++ app/src/main/res/values/strings.xml | 924 +++++++++--------- 13 files changed, 977 insertions(+), 499 deletions(-) create mode 100644 app/src/main/res/values-zh/strings.xml diff --git a/Guide.md b/Guide.md index 270dab1..337e7fd 100644 --- a/Guide.md +++ b/Guide.md @@ -623,7 +623,7 @@ adb shell pm remove-user USER_ID 如果是受管理的用户,只能管理受管理用户中的应用 -除了安装应用,所有的操作都需要应用的包名,你可以通过ADB命令查看已安装应用的包名 +除了安装应用,所有的操作都需要应用的包名,你可以通过ADB命令查看所有已安装应用的包名 ```shell adb shell pm list packages @@ -830,7 +830,7 @@ Profile owner无法禁用部分功能,工作资料中部分功能无效,wear - (24) 修改用户头像 - 跨用户复制(包括工作资料) - (28) 分享至工作应用 -- (28) 个人和工作密码相同 +- (28) 个人和工作密码相同(只能被工作资料Profile owner设置) ### 其他 diff --git a/app/src/main/java/com/binbin/androidowner/MainActivity.kt b/app/src/main/java/com/binbin/androidowner/MainActivity.kt index 67f34a3..b41f8cd 100644 --- a/app/src/main/java/com/binbin/androidowner/MainActivity.kt +++ b/app/src/main/java/com/binbin/androidowner/MainActivity.kt @@ -165,7 +165,7 @@ private fun HomePage(navCtrl:NavHostController){ if(activateType!=""){ Text(text = activateType, color = colorScheme.onPrimary, modifier = Modifier.padding(start = 2.dp)) } } } - HomePageItem(R.string.device_ctrl, R.drawable.mobile_phone_fill0, "SystemManage", navCtrl) + HomePageItem(R.string.system_manage, R.drawable.mobile_phone_fill0, "SystemManage", navCtrl) if(VERSION.SDK_INT>=24&&(isDeviceOwner(myDpm))||isProfileOwner(myDpm)){ HomePageItem(R.string.network, R.drawable.wifi_fill0, "Network",navCtrl) } if( (VERSION.SDK_INT<24&&!isDeviceOwner(myDpm))||( @@ -175,11 +175,11 @@ private fun HomePage(navCtrl:NavHostController){ ){ HomePageItem(R.string.work_profile, R.drawable.work_fill0, "ManagedProfile",navCtrl) } - HomePageItem(R.string.app_manage, R.drawable.apps_fill0, "ApplicationManage", navCtrl) + HomePageItem(R.string.app_manager, R.drawable.apps_fill0, "ApplicationManage", navCtrl) if(VERSION.SDK_INT>=24){ HomePageItem(R.string.user_restrict, R.drawable.person_off, "UserRestriction", navCtrl) } - HomePageItem(R.string.user_manage,R.drawable.manage_accounts_fill0,"UserManage",navCtrl) + HomePageItem(R.string.user_manager,R.drawable.manage_accounts_fill0,"UserManage",navCtrl) HomePageItem(R.string.password_and_keyguard, R.drawable.password_fill0, "Password",navCtrl) HomePageItem(R.string.setting, R.drawable.settings_fill0, "AppSetting",navCtrl) Spacer(Modifier.padding(vertical = 20.dp)) diff --git a/app/src/main/java/com/binbin/androidowner/dpm/ApplicationManage.kt b/app/src/main/java/com/binbin/androidowner/dpm/ApplicationManage.kt index a057f5d..56c0eb3 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/ApplicationManage.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/ApplicationManage.kt @@ -93,7 +93,7 @@ fun ApplicationManage(navCtrl:NavHostController){ navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}}, colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant) )*/ - TopBar(backStackEntry, navCtrl, localNavCtrl){Text(text = stringResource(titleMap[backStackEntry?.destination?.route] ?: R.string.app_manage))} + TopBar(backStackEntry, navCtrl, localNavCtrl){Text(text = stringResource(titleMap[backStackEntry?.destination?.route] ?: R.string.app_manager))} } ){ paddingValues-> Column(modifier = Modifier.fillMaxSize().padding(top = paddingValues.calculateTopPadding())){ @@ -483,8 +483,6 @@ private fun CrossProfileWidget(pkgName: String){ Spacer(Modifier.padding(vertical = 10.dp)) Text(text = stringResource(R.string.cross_profile_widget), style = typography.headlineLarge) Spacer(Modifier.padding(vertical = 5.dp)) - Text(text = stringResource(R.string.cross_profile_widget_desc)) - Spacer(Modifier.padding(vertical = 5.dp)) Text(text = stringResource(R.string.app_list_is)) SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize(Animations().animateListSize)){ Text(text = if(list==""){stringResource(R.string.none)}else{list}) diff --git a/app/src/main/java/com/binbin/androidowner/dpm/ManagedProfile.kt b/app/src/main/java/com/binbin/androidowner/dpm/ManagedProfile.kt index d76fc9e..63da861 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/ManagedProfile.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/ManagedProfile.kt @@ -154,7 +154,7 @@ private fun OrgOwnedProfile(){ color = colorScheme.onTertiaryContainer ) } - CopyTextButton(myContext, R.string.copy_code, stringResource(R.string.activate_org_profile_command, Binder.getCallingUid()/100000)) + CopyTextButton(myContext, R.string.copy_command, stringResource(R.string.activate_org_profile_command, Binder.getCallingUid()/100000)) } } } diff --git a/app/src/main/java/com/binbin/androidowner/dpm/Password.kt b/app/src/main/java/com/binbin/androidowner/dpm/Password.kt index b353305..962ec04 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/Password.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/Password.kt @@ -326,8 +326,6 @@ private fun PasswordComplexity(){ ){ Text(stringResource(R.string.require_set_new_password)) } - Spacer(Modifier.padding(vertical = 5.dp)) - Information{Text(text = stringResource(R.string.password_ordered_desc))} Spacer(Modifier.padding(vertical = 30.dp)) } } @@ -617,8 +615,6 @@ private fun PasswordQuality(){ ) { Text(stringResource(R.string.apply)) } - Spacer(Modifier.padding(vertical = 5.dp)) - Information{Text(text = stringResource(R.string.password_ordered_desc))} Spacer(Modifier.padding(vertical = 30.dp)) } } diff --git a/app/src/main/java/com/binbin/androidowner/dpm/Permissions.kt b/app/src/main/java/com/binbin/androidowner/dpm/Permissions.kt index 58de0f3..57286cb 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/Permissions.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/Permissions.kt @@ -130,7 +130,7 @@ private fun Home(localNavCtrl:NavHostController,listScrollState:ScrollState){ SubPageItem(R.string.account_types_management_disabled,"",R.drawable.account_circle_fill0){localNavCtrl.navigate("NoManagementAccount")} } if(VERSION.SDK_INT>=24&&isDeviceOwner(myDpm)){ - SubPageItem(R.string.owner_lockscr_info,"",R.drawable.screen_lock_portrait_fill0){localNavCtrl.navigate("LockScreenInfo")} + SubPageItem(R.string.device_owner_lock_screen_info,"",R.drawable.screen_lock_portrait_fill0){localNavCtrl.navigate("LockScreenInfo")} } if(VERSION.SDK_INT>=24&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm))){ SubPageItem(R.string.support_msg,"",R.drawable.chat_fill0){localNavCtrl.navigate("SupportMsg")} @@ -151,10 +151,10 @@ private fun LockScreenInfo(){ val focusMgr = LocalFocusManager.current var infoText by remember{mutableStateOf(myDpm.deviceOwnerLockScreenInfo?.toString() ?: "")} Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)){ - Text(text = stringResource(R.string.owner_lockscr_info), style = typography.headlineLarge) + Text(text = stringResource(R.string.device_owner_lock_screen_info), style = typography.headlineLarge) OutlinedTextField( value = infoText, - label = {Text(stringResource(R.string.owner_lockscr_info))}, + label = {Text(stringResource(R.string.device_owner_lock_screen_info))}, onValueChange = { infoText=it }, modifier = Modifier.focusable().fillMaxWidth().padding(vertical = 4.dp) ) @@ -214,7 +214,7 @@ private fun DeviceAdmin(navCtrl: NavHostController){ SelectionContainer { Text(text = stringResource(R.string.activate_device_admin_command)) } - CopyTextButton(myContext, R.string.copy_code, stringResource(R.string.activate_device_admin_command)) + CopyTextButton(myContext, R.string.copy_command, stringResource(R.string.activate_device_admin_command)) } } } @@ -241,7 +241,7 @@ private fun ProfileOwner(){ SelectionContainer{ Text(text = stringResource(R.string.activate_profile_owner_command)) } - CopyTextButton(myContext, R.string.copy_code, stringResource(R.string.activate_profile_owner_command)) + CopyTextButton(myContext, R.string.copy_command, stringResource(R.string.activate_profile_owner_command)) } } } @@ -271,7 +271,7 @@ private fun DeviceOwner(navCtrl: NavHostController){ SelectionContainer{ Text(text = stringResource(R.string.activate_device_owner_command)) } - CopyTextButton(myContext, R.string.copy_code, stringResource(R.string.activate_device_owner_command)) + CopyTextButton(myContext, R.string.copy_command, stringResource(R.string.activate_device_owner_command)) } } } diff --git a/app/src/main/java/com/binbin/androidowner/dpm/ShizukuActivate.kt b/app/src/main/java/com/binbin/androidowner/dpm/ShizukuActivate.kt index 6eefe6e..962ba8f 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/ShizukuActivate.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/ShizukuActivate.kt @@ -48,9 +48,6 @@ fun ShizukuActivate(){ val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) val focusMgr = LocalFocusManager.current - val sharedPref = LocalContext.current.getSharedPreferences("data", MODE_PRIVATE) - val isWear = sharedPref.getBoolean("isWear",false) - val bodyTextStyle = if(isWear){ typography.bodyMedium }else{ typography.bodyLarge } val filesDir = myContext.filesDir LaunchedEffect(Unit){ extractRish(myContext) } val coScope = rememberCoroutineScope() @@ -64,7 +61,7 @@ fun ShizukuActivate(){ if(Binder.getCallingUid()/100000!=0){ Row{ Icon(imageVector = Icons.Rounded.Warning, contentDescription = null, tint = colorScheme.onErrorContainer) - Text(text = stringResource(R.string.not_primary_user_not_support_shizuku), style = bodyTextStyle, color = colorScheme.onErrorContainer) + Text(text = stringResource(R.string.not_primary_user_not_support_shizuku), color = colorScheme.onErrorContainer) } } Button( @@ -150,7 +147,7 @@ fun ShizukuActivate(){ ){ Column { Text(text = stringResource(R.string.org_owned_work_profile), style = typography.titleLarge, color = colorScheme.onPrimaryContainer) - Text(text = stringResource(R.string.input_userid_of_work_profile), style = bodyTextStyle) + Text(text = stringResource(R.string.input_userid_of_work_profile)) var inputUserID by remember{mutableStateOf("")} OutlinedTextField( value = inputUserID, onValueChange = {inputUserID=it}, @@ -182,7 +179,7 @@ fun ShizukuActivate(){ } SelectionContainer(modifier = Modifier.align(Alignment.Start).horizontalScroll(outputTextScrollState)){ - Text(text = outputText, style = bodyTextStyle, softWrap = false, modifier = Modifier.padding(4.dp)) + Text(text = outputText, softWrap = false, modifier = Modifier.padding(4.dp)) } Spacer(Modifier.padding(vertical = 30.dp)) diff --git a/app/src/main/java/com/binbin/androidowner/dpm/SystemManage.kt b/app/src/main/java/com/binbin/androidowner/dpm/SystemManage.kt index 9b5fabf..e30360b 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/SystemManage.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/SystemManage.kt @@ -78,7 +78,7 @@ fun SystemManage(navCtrl:NavHostController){ TopBar(backStackEntry,navCtrl,localNavCtrl){ if(backStackEntry?.destination?.route=="Home"&&scrollState.maxValue>80){ Text( - text = stringResource(R.string.device_ctrl), + text = stringResource(R.string.system_manage), modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80) ) } @@ -116,7 +116,7 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState){ val myContext = LocalContext.current val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){ - Text(text = stringResource(R.string.device_ctrl), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) + Text(text = stringResource(R.string.system_manage), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){ SubPageItem(R.string.options,"",R.drawable.tune_fill0){navCtrl.navigate("Switches")} } @@ -168,7 +168,7 @@ private fun Switches(){ ) } if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){ - SwitchItem(R.string.disable_scrcap, stringResource(R.string.aosp_scrrec_also_work),R.drawable.screenshot_fill0, + SwitchItem(R.string.disable_screenshot, stringResource(R.string.also_disable_aosp_screen_record),R.drawable.screenshot_fill0, {myDpm.getScreenCaptureDisabled(null)},{myDpm.setScreenCaptureDisabled(myComponent,it) } ) } @@ -437,7 +437,7 @@ private fun NearbyStreamingPolicy(){ } var notificationPolicy by remember{mutableIntStateOf(myDpm.nearbyNotificationStreamingPolicy)} Spacer(Modifier.padding(vertical = 10.dp)) - Text(text = stringResource(R.string.nearby_notifi_streaming), style = typography.titleLarge) + Text(text = stringResource(R.string.nearby_notification_streaming), style = typography.titleLarge) Spacer(Modifier.padding(vertical = 3.dp)) RadioButtonItem(stringResource(R.string.decide_by_user),{notificationPolicy == NEARBY_STREAMING_NOT_CONTROLLED_BY_POLICY},{notificationPolicy = NEARBY_STREAMING_NOT_CONTROLLED_BY_POLICY}) RadioButtonItem(stringResource(R.string.enabled),{notificationPolicy == NEARBY_STREAMING_ENABLED},{notificationPolicy = NEARBY_STREAMING_ENABLED}) @@ -666,7 +666,7 @@ private fun SecurityLogs(){ val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){ Spacer(Modifier.padding(vertical = 10.dp)) - Text(text = stringResource(R.string.retrieve_security_logs), style = typography.headlineLarge) + Text(text = stringResource(R.string.security_logs), style = typography.headlineLarge) Spacer(Modifier.padding(vertical = 5.dp)) Text(text = stringResource(R.string.developing)) SwitchItem(R.string.enable,"",null,{myDpm.isSecurityLoggingEnabled(myComponent)},{myDpm.setSecurityLoggingEnabled(myComponent,it)}) diff --git a/app/src/main/java/com/binbin/androidowner/dpm/UserManage.kt b/app/src/main/java/com/binbin/androidowner/dpm/UserManage.kt index a18da00..bab8d5c 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/UserManage.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/UserManage.kt @@ -69,7 +69,7 @@ fun UserManage(navCtrl:NavHostController) { TopBar(backStackEntry,navCtrl,localNavCtrl){ if(backStackEntry?.destination?.route=="Home"&&scrollState.maxValue>80){ Text( - text = stringResource(R.string.user_manage), + text = stringResource(R.string.user_manager), modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80) ) } @@ -101,7 +101,7 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState){ val myContext = LocalContext.current val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){ - Text(text = stringResource(R.string.user_manage), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) + Text(text = stringResource(R.string.user_manager), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) SubPageItem(R.string.user_info,"",R.drawable.person_fill0){navCtrl.navigate("UserInfo")} SubPageItem(R.string.user_operation,"",R.drawable.sync_alt_fill0){navCtrl.navigate("UserOperation")} if(VERSION.SDK_INT>=24&&isDeviceOwner(myDpm)){ @@ -379,8 +379,6 @@ private fun AffiliationID(){ ) { Text(stringResource(R.string.apply)) } - Spacer(Modifier.padding(vertical = 5.dp)) - Information{Text(text = stringResource(R.string.affiliation_id_desc))} Spacer(Modifier.padding(vertical = 30.dp)) } } @@ -501,7 +499,7 @@ private fun UserIcon(){ Spacer(Modifier.padding(vertical = 10.dp)) Text(text = stringResource(R.string.change_user_icon), style = typography.headlineLarge) Spacer(Modifier.padding(vertical = 5.dp)) - Text(text = stringResource(R.string.pick_a_rect_picture)) + Text(text = stringResource(R.string.pick_a_square_image)) Spacer(Modifier.padding(vertical = 5.dp)) CheckBoxItem(stringResource(R.string.file_picker_instead_gallery),{getContent},{getContent=!getContent}) Spacer(Modifier.padding(vertical = 5.dp)) diff --git a/app/src/main/java/com/binbin/androidowner/dpm/UserRestriction.kt b/app/src/main/java/com/binbin/androidowner/dpm/UserRestriction.kt index 9b13008..d4bca34 100644 --- a/app/src/main/java/com/binbin/androidowner/dpm/UserRestriction.kt +++ b/app/src/main/java/com/binbin/androidowner/dpm/UserRestriction.kt @@ -250,7 +250,7 @@ private class RestrictionData{ if(VERSION.SDK_INT>=28){list += Restriction(UserManager.DISALLOW_CONFIG_LOCATION,R.string.config_location,"",R.drawable.location_on_fill0)} if(VERSION.SDK_INT>=22){list += Restriction(UserManager.DISALLOW_OUTGOING_BEAM,R.string.outgoing_beam,"",R.drawable.nfc_fill0)} list += Restriction(UserManager.DISALLOW_USB_FILE_TRANSFER,R.string.usb_file_transfer,"",R.drawable.usb_fill0) - list += Restriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,R.string.mount_physical_media, myContext.getString(R.string.mount_physical_media_desc),R.drawable.sd_card_fill0) + list += Restriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,R.string.mount_physical_media, "", R.drawable.sd_card_fill0) if(VERSION.SDK_INT>=28){list += Restriction(UserManager.DISALLOW_PRINTING,R.string.printing,"",R.drawable.print_fill0)} return list } diff --git a/app/src/main/res/resources.properties b/app/src/main/res/resources.properties index 465ad7e..63b46f9 100644 --- a/app/src/main/res/resources.properties +++ b/app/src/main/res/resources.properties @@ -1 +1 @@ -unqualifiedResLocale=zh-CN \ No newline at end of file +unqualifiedResLocale=en \ No newline at end of file diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml new file mode 100644 index 0000000..6afdb5a --- /dev/null +++ b/app/src/main/res/values-zh/strings.xml @@ -0,0 +1,489 @@ + + + 禁用 + 启用 + 禁用 + 启用 + 成功 + 失败 + 添加 + 移除 + 安装 + 卸载 + 取消 + 确定 + 已激活 + 未激活 + 激活 + 停用 + 黑名单 + 白名单 + 允许 + 拒绝 + 允许 + 拒绝 + 当前状态:%1$s + 自动 + 密码 + 原因 + 自定义 + 未知 + 重置 + 时间(ms) + + 无日志 + 默认 + 应用 + 由用户决定 + 不支持 + 功能开发中 + 请再试一次 + 效果未知 + 选项 + 复制代码 + + + Device admin + Profile owner + Device owner + 激活Device admin + adb shell dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver + adb shell dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver + adb shell dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver + 设备信息 + Financed device: %1$s + 设备策略管理器角色(DPMRH):%1$s + 未使用 + 正在使用 + 不支持 + 使用默认密钥 + 每个用户分别加密 + 激活的Device admin: %1$s + 设备唯一标识码 + 需要设置组织ID + 组织名称 + 不受管理的账号 + 账号类型 + 转移所有权 + 把Device owner或Profile owner权限转移到另一个应用。目标必须是Device admin + 目标包名 + 目标类名 + 锁屏提示信息 + 提供支持的消息 + 提供支持的短消息 + 如果你禁用了某个功能,用户尝试使用这个功能时会看见这个消息(可多行) + 提供支持的长消息 + 转移 + 在这里激活Android Owner + + + 暂不支持在非主用户中使用Shizuku + 检查Shizuku + 请输入工作资料的UserID + 列出Owners + 服务未启动 + 已授权(Shell) + 已授权(Root) + 激活Profile owner + 激活Device owner + + + 系统 + 禁用相机 + 禁止截屏 + 禁用状态栏 + 对AOSP的录屏也起作用 + 自动设置时间 + 自动设置时区 + 全局静音 + 备份服务 + 禁止蓝牙分享联系人 + 通用标准模式 + Common Criteria + USB信号 + 锁屏 + 禁用需要无密码 + 立即锁屏 + 需要重新输入密码 + 请求错误报告 + 重启 + 修改时间 + 从Epoch(1970/1/1 00:00:00 UTC)到你想设置的时间(毫秒) + 获取当前时间 + 权限策略 + 自动允许 + 自动拒绝 + MTE策略 + MTE:内存标记拓展,安卓14和ARMv9的高端功能 + 附近App共享 + 附近共享策略 + 附近通知共享 + 在足够安全时启用 + 锁定任务功能 + 禁用全部 + 允许状态栏信息 + 允许通知 + 允许返回主屏幕 + 允许打开后台应用概览 + 允许全局行为(比如长按电源键对话框) + 允许锁屏 + 阻止启动未允许的应用 + 白名单应用 + 包名 + 不存在 + Ca证书 + 请选择Ca证书 + 证书已安装:%1$s + 选择证书... + 卸载所有用户证书 + 安全日志 + 重启前安全日志 + 清除数据 + 清除外部存储 + 清除受保护的数据 + 清除eUICC(eSIM) + 静默清除 + 将会删除工作资料 + API34或以上将不能在系统用户中使用WipeData + + + 安全补丁: %1$s + 暂无系统更新 + 系统更新策略 + 准备好后立即更新 + 在某段时间里更新 + 延迟30天 + 开始时间 + 结束时间 + 请输入一天中的分钟(0~1440) + 系统更新接收时间: %1$s + + + 网络 + 最小WiFi安全等级 + 开放 + 优先网络服务 + WiFi锁定 + WiFi SSID策略 + SSID列表: + 不能为空 + 已经存在 + 请选择策略 + 私人DNS + 指定主机名 + 主机不支持 + 设为自动 + DNS主机名 + 无效主机名 + 安全错误 + 设置DNS主机 + 收集网络日志 + 收集 + WiFi密钥对 + 密钥对 + APN设置 + 一共有%1$s个APN设置 + 选择一个你要修改的APN设置(1~%1$s)或者输入0以新建APN设置 + 当前没有APN设置,你可以新建一个APN设置 + 上一步 + 下一步 + 名称 + 用户名 + 资料ID + 验证类型 + APN类型 + 位掩码 + 描述 + MMS代理 + 地址 + 端口 + 代理 + 网络类型 + 持久的 + 协议 + 漫游协议 + 更新 + + + 工作资料 + Profile owner(工作资料) + 工作资料已激活 + 创建工作资料 + 由组织拥有的工作资料:%1$s + 组织拥有的工作资料 + 跳过加密 + 创建 + 挂起个人应用 + 资料关闭时间 + 工作资料处于关闭状态的时间达到该限制后会挂起个人应用,0为无限制 + 个人应用已经因此挂起:%1$s + 不能少于72小时 + Intent过滤器 + 添加(工作到个人) + 添加(个人到工作) + 清除所有过滤器 + 组织ID + 长度应在6~64个字符之间 + 设置组织ID后才能获取设备唯一标识码 + + + 应用管理 + 应用选择器 + 加载中 + 显示用户应用 + 显示系统应用 + 显示priv-app + 显示apex应用 + 权限选择器 + 挂起 + 隐藏 + 如果隐藏,有可能是没安装 + VPN保持打开 + 权限 + 作用域: 工作资料 + 应用详情 + 未安装 + 防卸载 + 有时候无法正确获取防卸载状态 + 禁止用户控制 + 用户将无法清除应用的存储空间和缓存 + 应用列表: + 清空列表 + 权限管理 + 跨资料应用 + 跨资料微件 + 凭据管理策略 + 白名单和系统应用 + 许可的无障碍应用 + 许可的输入法 + 保持卸载的应用 + 数据清除 + 清除应用存储 + 设为默认拨号应用 + 卸载应用 + 静默卸载 + 请求卸载 + 安装应用 + 选择APK... + 静默安装 + 请求安装 + + + 用户限制 + Profile owner无法使用部分功能 + 打开开关后会禁用对应的功能 + 工作资料中部分功能无效 + 网络和互联网 + 更多连接 + 应用 + 用户 + 媒体 + 其他 + 需要DeviceOwner + 配置移动数据 + 配置Wi-Fi + 数据漫游 + 使用2G(GSM) + 超宽频段无线电 + 添加WiFi配置 + 修改WiFi状态 + WiFi直连 + WiFi共享 + 分享设备管理器配置的WiFi + 重置网络 + 配置网络共享 + 配置VPN + 配置私人DNS + 飞行模式 + 配置小区广播 + 短信 + 拨出电话 + + 蓝牙 + 蓝牙分享 + 分享位置 + 配置位置信息 + Beam发送 + USB文件传输 + 挂载物理媒体 + 打印 + + 安装未知来源应用(全局) + 安装未知来源应用 + 控制应用 + 清空缓存/清空内部存储 + 修改默认App + + 调整亮度 + 修改屏幕超时 + 息屏显示 + 调整音量 + 取消麦克风静音 + 切换摄像头使用权限 + 切换麦克风使用权限 + + 添加用户 + 移除用户 + 切换用户 + 修改用户头像 + 跨用户复制 + 分享至工作应用 + 个人和工作密码相同 + + 自动填充服务 + 配置凭据 + 内容捕获 + 内容建议 + 创建窗口 + 可能包括Toast和浮动通知 + 更换壁纸 + 启用设备管理器 + 娱乐 + 会影响谷歌商店的游戏 + 修改账号设置 + 修改语言 + 修改日期、时间 + 系统报错对话框 + 恢复出厂设置 + 安全模式 + 调试功能 + + + 用户管理 + 修改用户名 + 用户会话开始消息 + 用户会话结束消息 + 用户信息 + 用户已解锁:%1$s + 支持多用户:%1$s + 系统用户:%1$s + 管理员用户:%1$s + 无头系统用户: %1$s + 用户可以退出 : %1$s + 临时用户: %1$s + 附属用户: %1$s + 当前UserID:%1$s + 当前用户序列号:%1$s + 用户操作 + 序列号 + 使用UID + 登出当前用户 + 在后台启动 + 切换 + 停止 + 移除 + 创建用户 + 用户名 + 跳过创建用户向导 + 临时用户 + 启用所有系统应用 + 新用户的序列号:%1$s + 附属用户ID + 有空字符串 + 更换用户头像 + 尽量选择正方形的图片,以免产生问题 + 使用文件选择器而不是相册 + 选择图片... + 未知结果(失败) + 失败:受管理的资料 + 失败:当前用户 + 用户会话消息 + + + 密码与锁屏 + 密码信息 + 留空可以清除密码,纯数字将使用PIN码 + 最大密码错误次数 + 达到该限制会恢复出厂设置,0为无限制 + 错误次数 + 密码失效超时时间 + 屏幕超时 + 超时后锁屏(毫秒),0为由用户决定 + 超时后用户需重新设置密码(毫秒),0为无限制 + 密码历史记录长度 + 无(允许不设密码) + 低(允许图案和连续性) + 中(无连续性,至少4位) + 高(无连续性,至少6位) + 当前密码复杂度:%1$s + 密码达到要求:%1$s + 密码已错误次数:%1$s + 个人与工作应用密码一致:%1$s + 密码重置令牌 + 清除 + 设置 + 请先设置令牌 + 没有密码时会自动激活令牌 + 重置密码 + 启动(boot)时不要求密码 + 不允许其他设备管理员重置密码直至用户输入一次密码 + 需要4位密码 + 使用令牌重置密码 + 重置密码(弃用) + 密码复杂度要求 + 要求设置新密码 + 锁屏功能 + 启用全部 + 禁用小工具(安卓5以下) + 禁用相机 + 禁用通知 + 禁用未经编辑的通知 + 禁用可信代理 + 禁用指纹解锁 + 禁止远程输入(弃用) + 禁用人脸解锁 + 禁用虹膜解锁(?) + 禁用生物识别 + 禁用快捷方式 + 未指定 + 需要密码或图案,不管复杂度 + 至少1个字母 + 至少1个数字 + 数字字母各至少一个 + 生物识别(弱) + 复杂数字(无连续性) + 密码质量要求 + 设置密码复杂度将会取代密码质量 + 已弃用,请使用上面的”密码复杂度要求“。点击展开 + 在这里激活密码重置令牌 + + + 设置 + 动态取色 + 安卓12+ + 关于 + 使用安卓的Device admin、Device owner 、Profile owner,全方位掌控你的设备 + 使用教程 + 源代码 + 纯黑夜间主题 + 需要打开夜间模式 + 需要重启应用 + + + 读取外部存储 + 写入外部存储 + 读取音频 + 读取视频 + 读取图片 + 相机 + 录音 + 读取联系人 + 写入联系人 + 读取日历 + 写入日历 + 粗略位置 + 准确位置 + 后台获取位置 + 打电话 + 读取手机状态 + 读取短信 + 接收短信 + 发送短信 + 读取通话记录 + 写入通话记录 + 身体传感器 + 后台使用身体传感器 + 查看使用情况 + 发送通知 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32d076c..d6b6703 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,503 +1,503 @@ Android Owner - 禁用 - 启用 - 禁用 - 启用 - 成功 - 失败 - 添加 - 移除 - 安装 - 卸载 - 取消 - 确定 - 已激活 - 未激活 - 激活 - 停用 - 黑名单 - 白名单 - 允许 - 拒绝 - 允许 - 拒绝 - 当前状态:%1$s - 自动 - 密码 - 原因 - 自定义 - 未知 - 重置 - 时间(ms) - - 无日志 - 默认 - 应用 - 由用户决定 - 不支持 - 功能开发中 - 请再试一次 - 效果未知 - 选项 - 复制代码 + Disabled + Enabled + Disable + Enable + Success + Fail + Add + Remove + Install + Uninstall + Cancel + Confirm + Activated + Deactivated + Activate + Deactivate + Blacklist + Whitelist + Granted + Denied + Grant + Deny + Current status: %1$s + Auto + Password + Reason + Custom + Unknown + Reset + Time(ms) + None + No logs + Default + Apply + Decide by user + Unsupported + Developing + Try again + Unknown effect + Options + Copy Command + Package name + Not exist Device admin Profile owner Device owner - 激活Device admin + Activate Device admin adb shell dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver adb shell dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver adb shell dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver - 设备信息 - 企业资产 : %1$s - 设备策略管理器角色(DPMRH):%1$s - 未使用 - 正在使用 - 不支持 - 使用默认密钥 - 每个用户分别加密 - 激活的Device admin: %1$s - 设备唯一标识码 - 需要设置组织ID - 组织名称 - 不受管理的账号 - 账号类型 - 转移所有权 - 把Device owner或Profile owner权限转移到另一个应用。目标必须是Device admin - 目标包名 - 目标类名 - 锁屏提示信息 - 提供支持的消息 - 提供支持的短消息 - 如果你禁用了某个功能,用户尝试使用这个功能时会看见这个消息(可多行) - 提供支持的长消息 - 转移 - 在这里激活Android Owner + Device info + Financed device: %1$s + Device policy manager role holder:%1$s + + Inactive + Active + Unsupported + Active(default key) + Active(per-user) + Activated device admin: %1$s + Enrollment specific ID + Require organization ID + Organization name + Account types with management disabled + Account types: + Transform Ownership + Transform device owner or profile owner privilege to another app. The target app must be a device admin. + Target package name + Target class name + Lockscreen info + Support Message + Short message + When you try to use functions disabled by this app, the support message will show. + Long message + Transform + Activate Android Owner here. - Shizuku - 暂不支持在非主用户中使用Shizuku - 检查Shizuku - 请输入工作资料的UserID - 列出Owners - 服务未启动 - + Shizuku + You can only use this feature in the primary user. + Check permission + Enter UserID of work profile + List owners + Shizuku not started. + dpm mark-profile-owner-on-organization-owned-device --user %1$s com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver - dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver - dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver - dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver - 已授权(Shell) - 已授权(Root) - 激活Profile owner - 激活Device owner + dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver + dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver + dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver + Permission granted (Shell) + Permission granted (Root) + Activate profile owner + Activate device owner - 系统 - 禁用相机 - 禁止截屏 - 禁用状态栏 - 对AOSP的录屏也起作用 - 自动设置时间 - 自动设置时区 - 全局静音 - 备份服务 - 禁止蓝牙分享联系人 - 通用标准模式 - Common Criteria - USB信号 - 锁屏 - 禁用需要无密码 - 立即锁屏 - 需要重新输入密码 - 请求错误报告 - 重启 - 修改时间 - 从Epoch(1970/1/1 00:00:00 UTC)到你想设置的时间(毫秒) - 获取当前时间 - 权限策略 - 自动允许 - 自动拒绝 - MTE策略 - MTE:内存标记拓展,安卓14和ARMv9的高端功能 - 附近App共享 - 附近共享策略 - 附近通知共享 - 在足够安全时启用 - 锁定任务功能 - 禁用全部 - 允许状态栏信息 - 允许通知 - 允许返回主屏幕 - 允许打开后台应用概览 - 允许全局行为(比如长按电源键对话框) - 允许锁屏 - 阻止启动未允许的应用 - 白名单应用 - 包名 - 不存在 - Ca证书 - 请选择Ca证书(.0) - 证书已安装:%1$s - 选择证书... - 卸载所有用户证书 - 收集安全日志 - 安全日志 - 重启前安全日志 - 清除数据 - 清除外部存储 - 清除受保护的数据 - 清除eUICC(eSIM) - 静默清除 - 将会删除工作资料 - API34或以上将不能在系统用户中使用WipeData + System manager + Disable camera + Disable screenshot + Disable status bar + Also disable screen record in AOSP. + Auto time + Auto timezone + Master mute + Backup service + Disable bluetooth contact sharing + Common criteria mode + Unknown effect + USB signal + Keyguard + Disable keyguard require no password is set. + Lock screen now + Require re-enter password + Request bug report + Reboot + Edit time + From Epoch(1970/1/1 00:00:00 UTC) to the time you want to set(ms) + Current time + Permission policy + Auto grant + Auto deny + MTE policy + MTE: Memory Tagging Extension, require Android 14 and ARMv9 + Nearby App streaming policy + Nearby streaming policy + Nearby notification streaming policy + Same managed account only + Lock task feature + Disable all + + Allow system info + Allow notifications + Allow home + Allow overview + Allow global actions + Allow keyguard + Block activity start in task + Whitelisted app + Ca certification + Please select a certification + Cert installed: %1$s + Select cert... + Uninstall all user cert + Security logs + Pre-reboot security logs + Wipe data + Wipe external storage + Wipe protected data + Wipe eUICC(eSIM) + Wipe silently + Work profile will be deleted. + You cannot use WipeData in system user. - 安全补丁: %1$s - 暂无系统更新 - 系统更新策略 - 准备好后立即更新 - 在某段时间里更新 - 延迟30天 - 开始时间 - 结束时间 - 请输入一天中的分钟(0~1440) - 系统更新接收时间: %1$s + Security patch: %1$s + There\'s no system update + System update policy + Automatic + Install windowed + Postpone 30 days + Start time + End time + Please enter minutes in a day(0~1440) + Update received time: %1$s - 网络 - 最小WiFi安全等级 - 开放 - 优先网络服务 - WiFi锁定 - WiFi SSID策略 - SSID列表: - 不能为空 - 已经存在 - 请选择策略 - 私人DNS - 指定主机名 - 主机不支持DNS over TLS - 设为自动 - DNS主机名 - 无效主机名 - 安全错误 - 设置DNS主机 - 收集网络日志 - 收集 - WiFi密钥对 - 密钥对 - APN设置 - 一共有%1$s个APN设置 - 选择一个你要修改的APN设置(1~%1$s)或者输入0以新建APN设置 - 当前没有APN设置,你可以新建一个APN设置 - 上一步 - 下一步 - 名称 - 用户名 - 资料ID - 验证类型 - APN类型 - 位掩码 - 描述 - MMS代理 - 地址 - 端口 - 代理 - 网络类型 - 持久的 - 协议 - 漫游协议 - 更新 + Network + Min WiFi security level + Open + Preferential network service + WiFi lockdown + WiFi SSID policy + SSID list: + Cannot be empty + Already exist + Please select a policy + PrivateDNS + Provide hostname + Host not serving + Set to auto + DNS hostname + Invalid hostname + Security Exception + Set DNS host + Network logs + Retrieve + WiFi keypair + Keypair + APN settings + APN settings amount: %1$s + Select a APN setting you want to edit (1~%1$s) or enter 0 to create a new APN setting. + No APN settings. Will create a new one. + Previous step + Next step + Name + User name + Profile ID + Auth type + APN type + Bitmask + Description + MMS proxy + Address + Port + Proxy + Network type + Persistent + Protocol + Roaming protocol + Update - 工作资料 - Profile owner(工作资料) - 工作资料已激活 - 创建工作资料 - 由组织拥有的工作资料:%1$s - 组织拥有的工作资料 - adb shell \"dpm mark-profile-owner-on-organization-owned-device --user %1$s com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver\" - 跳过加密 - 创建 - 挂起个人应用 - 资料关闭时间 - 工作资料处于关闭状态的时间达到该限制后会挂起个人应用,0为无限制 - 个人应用已经因此挂起:%1$s - 不能少于72小时 - Intent过滤器 - 添加(工作到个人) - 添加(个人到工作) - 清除所有过滤器 - 组织ID - 长度应在6~64个字符之间 - 设置组织ID后才能获取设备唯一标识码 + Work Profile + Profile owner (Work profile) + Work profile activated + Create work profile + Organization owned work profile: %1$s + Organization work profile + + adb shell \"dpm mark-profile-owner-on-organization-owned-device --user %1$s com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver\" + + Skip encryption + Create + Suspend personal app + Max time off + Personal apps will be suspended after the work profile is closed for this amount of time. 0 means no limit. + Personal app suspended because of this: %1$s + Cannot less than 72 hours + Intent filter + Add(work to personal) + Add(personal to work) + Clear all filters + Organization ID + The length should be between 6~64 characters + You can get device specific ID after set this. - - 应用管理 - 应用选择器 - 加载中 - 显示用户应用 - 显示系统应用 - 显示priv-app - 显示apex应用 - 权限选择器 - 挂起 - 隐藏 - 如果隐藏,有可能是没安装 - VPN保持打开 - 权限 - 作用域: 工作资料 - 应用详情 - 未安装 - 防卸载 - 有时候无法正确获取防卸载状态 - 禁止用户控制 - 用户将无法清除应用的存储空间和缓存 - 应用列表: - 清空列表 - 权限管理 - 跨资料应用 - 跨资料微件 - (跨资料桌面小部件提供者) - 凭据管理策略 - 白名单和系统应用 - 许可的无障碍应用 - 许可的输入法 - 保持卸载的应用 - 数据清除 - 清除应用存储 - 设为默认拨号应用 - 卸载应用 - 静默卸载 - 请求卸载 - 安装应用 - 选择APK... - 静默安装 - 请求安装 + + App manager + Package selector + Loading + Show user apps + Show system apps + Show priv-apps + Show apex apps + Permission picker + Suspend + Hide + Non-existent apps is hidden + Always-on VPN + Permission + Scope: work profile + App info + Not installed + Block uninstall + Sometimes it shows a wrong status + + Disable user control + If you set this, you cannot clear storage or cache of the app. + App list: + Clear list + Permission manage + Cross profile package + Cross profile widget + Credential manage policy + Whitelist and system app + Permitted accessibility app + Permitted IME + Keep uninstalled packages + Clear data + Clear app data + Set default dialer + Uninstall app + Silent uninstall + Request uninstall + Install app + Select APK... + Silent install + Request install - 用户限制 - Profile owner无法使用部分功能 - 打开开关后会禁用对应的功能 - 工作资料中部分功能无效 - 网络和互联网 - 更多连接 - 应用 - 用户 - 媒体 - 其他 - 需要DeviceOwner - 配置移动数据 - 配置Wi-Fi - 数据漫游 - 使用2G(GSM) - 超宽频段无线电 - 添加WiFi配置 - 修改WiFi状态 - WiFi直连 - WiFi共享 - 分享设备管理器配置的WiFi - 重置网络 - 配置网络共享 - 配置VPN - 配置私人DNS - 飞行模式 - 配置小区广播 - 短信 - 拨出电话 + User restriction + Profile owner can use limited function + Turn on a switch to disable that function. + Functions in work profile is limited. + Network + Other connection + Applications + User + Media + Other + Require device owner + Configure mobile network + Configure WiFi + Data roaming + 2G cellular + Ultra wideband radio + Add WiFi config + Change WiFi status + WiFi direct + WiFi tethering + Share admin configured WiFi + Reset network + Configure tethering + Configure VPN + Configure private DNS + Airplane mode + Configure cell broadcasts + SMS + Outgoing calls - 蓝牙 - 蓝牙分享 - 分享位置 - 配置位置信息 - Beam发送 - USB文件传输 - 挂载物理媒体 - 包括TF卡和USB-OTG - 打印 + Bluetooth + Bluetooth sharing + Share location + Configure location + Outgoing Beam + USB file transfer + Mount physical media + Print - 安装未知来源应用(全局) - 安装未知来源应用 - 控制应用 - 清空缓存/清空内部存储 - 修改默认App + Install unknown sources globally + Install unknown sources + Apps control + Clear app data or cache + Configure default apps - 调整亮度 - 修改屏幕超时 - 息屏显示 - 调整音量 - 取消麦克风静音 - 切换摄像头使用权限 - 切换麦克风使用权限 + Configure brightness + Configure screen timeout + Ambient display + Adjust volume + Unmute microphone + Camera toggle + Microphone toggle - 添加用户 - 移除用户 - 切换用户 - 修改用户头像 - 跨用户复制 - 分享至工作应用 - 个人和工作密码相同 + Add user + Remove user + Switch user + Set user icon + Cross profile copy + Share into managed profile + Unified password - 自动填充服务 - 配置凭据 - 内容捕获 - 内容建议 - 创建窗口 - 可能包括Toast和浮动通知 - 更换壁纸 - 启用设备管理器 - 娱乐 - 会影响谷歌商店的游戏 - 修改账号设置 - 修改语言 - 修改日期、时间 - 系统报错对话框 - 恢复出厂设置 - 安全模式 - 调试功能 + Autofill + Configure credentials + Content capture + Content suggestions + Create windows + e.g. toasts, notifications banner + Set wallpaper + Grant device admin + Fun + May disable games + Modify accounts + Configure locale + Configure date or time + System error dialog + Factory reset + Safe boot + Debug features - 用户管理 - 修改用户名 - 用户会话开始消息 - 用户会话结束消息 - 用户信息 - 用户已解锁:%1$s - 支持多用户:%1$s - 系统用户:%1$s - 管理员用户:%1$s - 无头系统用户: %1$s - 用户可以退出 : %1$s - 临时用户: %1$s - 附属用户: %1$s - 当前UserID:%1$s - 当前用户序列号:%1$s - 用户操作 - 序列号 - 使用UID - 登出当前用户 - 在后台启动 - 切换 - 停止 - 移除 - 创建用户 - 用户名 - 跳过创建用户向导 - 临时用户 - 启用所有系统应用 - 新用户的序列号:%1$s - 附属用户ID - 有空字符串 - 如果多用户,附属用户ID相同时可以让其他用户附属于主用户 - 更换用户头像 - 尽量选择正方形的图片,以免产生问题 - 使用文件选择器而不是相册 - 选择图片... - 未知结果(失败) - 失败:受管理的资料 - 失败:当前用户 - 用户会话消息 + User manager + Edit username + Start user session message + End user session message + User info + User unlocked: %1$s + Support multiuser: %1$s + System user: %1$s + Admin user: %1$s + Headless system user: %1$s + User can logout: %1$s + Ephemeral user: %1$s + Affiliated user: %1$s + UserID:%1$s + User serial number: %1$s + User operation + Serial number + Use UID + Logout current user + Start in background + Switch + Stop + Remove + Create user + Username + Skip wizard + Ephemeral user + Enable all system app + Serial number of this user: %1$s + Affiliation ID + Include empty string + Change user icon + You should pick a square image + Use file picker instead of gallery + Select image... + Unknown result(may failed) + Failed: managed profile + Failed: current user + User session message - 密码与锁屏 - 密码信息 - 留空可以清除密码,纯数字将使用PIN码 - 最大密码错误次数 - 达到该限制会恢复出厂设置,0为无限制 - 错误次数 - 密码失效超时时间 - 屏幕超时 - 超时后锁屏(毫秒),0为由用户决定 - 超时后用户需重新设置密码(毫秒),0为无限制 - 密码历史记录长度 - 无(允许不设密码) - 低(允许图案和连续性) - 中(无连续性,至少4位) - 高(无连续性,至少6位) - 当前密码复杂度:%1$s - 密码达到要求:%1$s - 密码已错误次数:%1$s - 个人与工作应用密码一致:%1$s - 密码重置令牌 - 清除 - 设置 - 请先设置令牌 - 没有密码时会自动激活令牌 - 重置密码 - 启动(boot)时不要求密码 - 不允许其他设备管理员重置密码直至用户输入一次密码 - 需要4位密码 - 使用令牌重置密码 - 重置密码(弃用) - 密码复杂度要求 - 连续性:密码重复(6666)或密码递增递减(4321、2468) - 要求设置新密码 - 锁屏功能 - 启用全部 - 禁用小工具(安卓5以下) - 禁用相机 - 禁用通知 - 禁用未经编辑的通知 - 禁用可信代理 - 禁用指纹解锁 - 禁止远程输入(弃用) - 禁用人脸解锁 - 禁用虹膜解锁(?) - 禁用生物识别 - 禁用快捷方式 - 未指定 - 需要密码或图案,不管复杂度 - 至少1个字母 - 至少1个数字 - 数字字母各至少一个 - 生物识别(弱) - 复杂数字(无连续性) - 密码质量要求 - 设置密码复杂度将会取代密码质量 - 已弃用,请使用上面的”密码复杂度要求“。点击展开 - 在这里激活密码重置令牌 + Password and keyguard + Password Info + Keep empty to remove password + Max failed password + When reach this limit, the device will factory reset + Max number of fail + Password timeout + Screen timeout + Enter 0 to allow user decision, unit: millisecond + When reach this limit, user should set a new password. Enter 0 to allow user decision, unit: millisecond + Password history length + None + Low + Medium + High + Current password complexity: %1$s + is password sufficient: %1$s + Password failed attempts: %1$s + Unified password: %1$s + Reset password token + Clear + Set + Please set a token + Token will be automatically activated if no password is set. + Reset password + Do not ask credentials on boot + Require entry + Require at least 4 digit password + Reset password with token + Reset password + Required password complexity + Require set new password + Keyguard features + Enable all + Disable widget + Disable camera + Disable notification + Disable unredacted notification + Disable trust agents + Disable fingerprint + Disable remote input + Disable face + Disable iris + Disable biometrics + Disable shortcuts + Unspecified + Require a password + Alphabetic + Numeric + Alphanumeric + Biometrics + Numeric complex + Required password quality + Set password complexity will disable password complexity. + Deprecated. Use required password complexity instead. + Activate reset password token here. - 设置 - 动态取色 - 安卓12+ - 关于 - 使用安卓的Device admin、Device owner 、Profile owner,全方位掌控你的设备 - 使用教程 - 源代码 - 纯黑夜间主题 - 需要打开夜间模式 - 需要重启应用 + Settings + Dynamic color + Android 12+ + About + Use device admin, profile owner and device owner privilege to take full control of your device. + User guide + Source code + Black theme + Require dark mode on + Require restart this app - 读取外部存储 - 写入外部存储 - 读取音频 - 读取视频 - 读取图片 - 相机 - 录音 - 读取联系人 - 写入联系人 - 读取日历 - 写入日历 - 粗略位置 - 准确位置 - 后台获取位置 - 打电话 - 读取手机状态 - 读取短信 - 接收短信 - 发送短信 - 读取通话记录 - 写入通话记录 - 传感器 - 后台使用传感器 - 查看使用情况 - 发送通知 + Read external storage + Write external storage + Read media (audio) + Read media (video) + Read media (images) + Camera + Microphone + Read contacts + Write contacts + Read calendar + Write calendar + Access coarse location + Access fine location + Access location in background + Call phone + Read phone state + Read SMS + Receive SMS + Send SMS + Read call log + Write call log + Access body sensors + Access body sensors in background + Activity recognition + Post notifications