From c90325e1c3d5ddff2d360fd5372bf2ddcd435c42 Mon Sep 17 00:00:00 2001 From: BinTianqi Date: Sat, 30 Nov 2024 17:07:02 +0800 Subject: [PATCH] Update Readme files Change version code and version name Update some strings --- Readme-en.md | 56 ++++++++++++------- Readme.md | 50 +++++++++++------ app/build.gradle.kts | 4 +- .../com/bintianqi/owndroid/MainActivity.kt | 16 +++--- .../owndroid/{Setting.kt => Settings.kt} | 8 +-- .../main/java/com/bintianqi/owndroid/Utils.kt | 6 +- .../{ApplicationManage.kt => Applications.kt} | 0 .../com/bintianqi/owndroid/dpm/Network.kt | 4 +- .../dpm/{SystemManager.kt => System.kt} | 14 ++--- .../owndroid/dpm/{UserManager.kt => Users.kt} | 18 +++--- app/src/main/res/values-ru/strings.xml | 23 ++++---- app/src/main/res/values-tr/strings.xml | 43 +++++++------- app/src/main/res/values-zh-rCN/strings.xml | 45 ++++++++------- app/src/main/res/values/strings.xml | 45 ++++++++------- 14 files changed, 180 insertions(+), 152 deletions(-) rename app/src/main/java/com/bintianqi/owndroid/{Setting.kt => Settings.kt} (96%) rename app/src/main/java/com/bintianqi/owndroid/dpm/{ApplicationManage.kt => Applications.kt} (100%) rename app/src/main/java/com/bintianqi/owndroid/dpm/{SystemManager.kt => System.kt} (99%) rename app/src/main/java/com/bintianqi/owndroid/dpm/{UserManager.kt => Users.kt} (97%) diff --git a/Readme-en.md b/Readme-en.md index 971fd88..7dc6876 100644 --- a/Readme-en.md +++ b/Readme-en.md @@ -1,33 +1,49 @@ -# OwnDroid - [简体中文](Readme.md) -### Description +# OwnDroid -Use Device admin and Device owner privilege to take full control of your device. +Use Android Device owner privilege to manage your device. -### Advantage - -- Open source. Device owner privilege could be more dangerous than root, close-source software's security is not guaranteed. -- Easy to use. You can use this utility easily. English docs are also provided. -- Modern. This app is built with Kotlin and Jetpack Compose, designed with Material Design 3. And some new features on Android 14 is adapted. -- Maintaining. This project is updating. Any Issue and PR is welcome. - -### Disadvantage - -This software may not have as many features as Google's official [TestDPC](https://github.com/googlesamples/android-testdpc) - -### Features +## Features - System + - Options: disable camera, disable screenshot, master volume mute, disable USB signal... + - Permission policy + - _Wipe data_ + - ... - Network + - Minimum Wi-Fi security level + - Always-on VPN + - Network logging + - ... - Work profile -- App manage -- User restrictions -- User manage + - Create work profile + - Suspend personal apps + - ... +- Applications + - Suspend/hide app + - Block app uninstallation + - Install/uninstall app + - ... +- User restriction + - Network: disable configuring mobile network, disable configuring Wi-Fi, disable SMS, disable outgoing calls... + - Connection: disable bluetooth, disable configuring location, disable USB file transfer, disable printing... + - Applications: disable installing/uninstalling app... + - Users: disable adding/removing/switching user... + - Media: disable configuring brightness, disable adjusting volume... + - Other: disable modifying accounts, disable configuring locale, disable factory reset, disable debug features... +- User manager + - User information + - Start/switch/stop/delete user + - Create user + - ... - Password and keyguard + - _Reset password_ + - Require password complexity + - Set screen timeout + - ... -### License +## License [License.md](LICENSE.md) diff --git a/Readme.md b/Readme.md index b9429ba..384a296 100644 --- a/Readme.md +++ b/Readme.md @@ -1,33 +1,49 @@ -# OwnDroid - [English](Readme-en.md) -### 简介 +# OwnDroid -使用安卓的Device Admin和Device Owner特权,完全掌控你的设备。 +使用安卓Device owner特权管理你的设备。 -### 优点 - -- 开源。Device owner权限可能比root权限更危险,闭源软件的安全性没有保证 -- 易于使用。应用中的功能清晰明了,并且有在线的文档 -- 现代化。使用 Kotlin + Jetpack Compose,使用Material Design 3,适配安卓14的一些新功能 -- 维护中。这个项目正在不断更新。欢迎 Issue 和 Pull request - -### 缺点 - -- 功能没有谷歌官方的 [TestDPC](https://github.com/googlesamples/android-testdpc) 那么全 - -### 功能 +## 功能 - 系统 + - 选项:禁用摄像头、禁止截屏、全局静音、禁用USB信号... + - 权限策略 + - 清除数据 + - ... - 网络 + - 最小Wi-Fi安全等级 + - VPN保持打开 + - 网络日志 + - ... - 工作资料 + - 创建工作资料 + - 挂起个人应用 + - ... - 应用管理 + - 挂起/隐藏应用 + - 阻止应用卸载 + - 安装/卸载应用 + - ... - 用户限制 + - 网络:禁止配置移动网络、禁止配置Wi-Fi、禁用短信、禁止拨出电话... + - 连接:禁用蓝牙、禁止配置定位、禁用USB文件传输、禁用打印... + - 应用:禁止安装/卸载应用... + - 用户:禁止添加/删除/切换用户... + - 媒体:禁止调整亮度、禁止调整音量... + - 其他:禁止修改账号、禁止修改语言、禁止恢复出场设置、禁用调试功能... - 用户管理 + - 用户信息 + - 启动/切换/停止/删除用户 + - 创建用户 + - ... - 密码与锁屏 + - 重置密码 + - 要求密码复杂度 + - 设置屏幕超时 + - ... -### 许可证 +## 许可证 [License.md](LICENSE.md) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 48b2de8..9efb9d8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -24,8 +24,8 @@ android { applicationId = "com.bintianqi.owndroid" minSdk = 21 targetSdk = 34 - versionCode = 33 - versionName = "6.1" + versionCode = 34 + versionName = "6.2" multiDexEnabled = false } diff --git a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt index d86dc11..16ce7d6 100644 --- a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt +++ b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt @@ -157,14 +157,14 @@ fun Home(vm: MyViewModel) { popExitTransition = Animations.navHostPopExitTransition ) { composable(route = "HomePage") { HomePage(navCtrl) } - composable(route = "SystemManage") { SystemManage(navCtrl) } + composable(route = "System") { SystemManage(navCtrl) } composable(route = "ManagedProfile") { ManagedProfile(navCtrl) } composable(route = "Permissions") { DpmPermissions(navCtrl) } - composable(route = "ApplicationManage") { ApplicationManage(navCtrl, dialogStatus) } + composable(route = "Applications") { ApplicationManage(navCtrl, dialogStatus) } composable(route = "UserRestriction") { UserRestriction(navCtrl) } - composable(route = "UserManage") { UserManage(navCtrl) } + composable(route = "Users") { UserManage(navCtrl) } composable(route = "Password") { Password(navCtrl) } - composable(route = "AppSetting") { AppSetting(navCtrl, vm) } + composable(route = "Settings") { AppSetting(navCtrl, vm) } composable(route = "Network") { Network(navCtrl) } composable(route = "PackageSelector") { PackageSelector(navCtrl) } } @@ -237,7 +237,7 @@ private fun HomePage(navCtrl:NavHostController) { if(activateType != "") { Text(text = activateType, color = colorScheme.onPrimary) } } } - HomePageItem(R.string.system_manage, R.drawable.mobile_phone_fill0, "SystemManage", navCtrl) + HomePageItem(R.string.system, R.drawable.android_fill0, "System", navCtrl) if(deviceOwner || profileOwner) { HomePageItem(R.string.network, R.drawable.wifi_fill0, "Network", navCtrl) } if( (VERSION.SDK_INT < 24 && !deviceOwner) || ( @@ -247,13 +247,13 @@ private fun HomePage(navCtrl:NavHostController) { ) { HomePageItem(R.string.work_profile, R.drawable.work_fill0, "ManagedProfile", navCtrl) } - if(deviceOwner || profileOwner) HomePageItem(R.string.app_manager, R.drawable.apps_fill0, "ApplicationManage", navCtrl) + if(deviceOwner || profileOwner) HomePageItem(R.string.applications, R.drawable.apps_fill0, "Applications", navCtrl) if(VERSION.SDK_INT >= 24 && (profileOwner || deviceOwner)) { HomePageItem(R.string.user_restrict, R.drawable.person_off, "UserRestriction", navCtrl) } - HomePageItem(R.string.user_manager,R.drawable.manage_accounts_fill0,"UserManage", navCtrl) + HomePageItem(R.string.users,R.drawable.manage_accounts_fill0,"Users", navCtrl) HomePageItem(R.string.password_and_keyguard, R.drawable.password_fill0, "Password", navCtrl) - HomePageItem(R.string.setting, R.drawable.settings_fill0, "AppSetting", navCtrl) + HomePageItem(R.string.settings, R.drawable.settings_fill0, "Settings", navCtrl) Spacer(Modifier.padding(vertical = 20.dp)) } } diff --git a/app/src/main/java/com/bintianqi/owndroid/Setting.kt b/app/src/main/java/com/bintianqi/owndroid/Settings.kt similarity index 96% rename from app/src/main/java/com/bintianqi/owndroid/Setting.kt rename to app/src/main/java/com/bintianqi/owndroid/Settings.kt index 60113dc..db21e8a 100644 --- a/app/src/main/java/com/bintianqi/owndroid/Setting.kt +++ b/app/src/main/java/com/bintianqi/owndroid/Settings.kt @@ -78,7 +78,7 @@ fun AppSetting(navCtrl:NavHostController, vm: MyViewModel) { private fun Home(navCtrl: NavHostController) { Column(modifier = Modifier.fillMaxSize()) { SubPageItem(R.string.options, "", R.drawable.tune_fill0) { navCtrl.navigate("Options") } - SubPageItem(R.string.theme, "", R.drawable.format_paint_fill0) { navCtrl.navigate("Theme") } + SubPageItem(R.string.appearance, "", R.drawable.format_paint_fill0) { navCtrl.navigate("Theme") } SubPageItem(R.string.security, "", R.drawable.lock_fill0) { navCtrl.navigate("Auth") } SubPageItem(R.string.automation_api, "", R.drawable.apps_fill0) { navCtrl.navigate("Automation") } SubPageItem(R.string.about, "", R.drawable.info_fill0) { navCtrl.navigate("About") } @@ -240,12 +240,12 @@ private fun About() { Spacer(Modifier.padding(vertical = 5.dp)) Text(text = stringResource(R.string.app_name)+" v$verName ($verCode)", modifier = Modifier.padding(start = 26.dp)) Spacer(Modifier.padding(vertical = 5.dp)) - SubPageItem(R.string.source_code, "", R.drawable.open_in_new) { shareLink(context, "https://github.com/BinTianqi/OwnDroid") } + SubPageItem(R.string.project_homepage, "GitHub", R.drawable.open_in_new) { shareLink(context, "https://github.com/BinTianqi/OwnDroid") } } } -fun shareLink(inputContext:Context,link:String) { +fun shareLink(inputContext: Context, link: String) { val uri = Uri.parse(link) val intent = Intent(Intent.ACTION_VIEW, uri) - inputContext.startActivity(Intent.createChooser(intent, "Open in browser"),null) + inputContext.startActivity(Intent.createChooser(intent, "Open in browser"), null) } diff --git a/app/src/main/java/com/bintianqi/owndroid/Utils.kt b/app/src/main/java/com/bintianqi/owndroid/Utils.kt index f2ec0b5..8d2cf09 100644 --- a/app/src/main/java/com/bintianqi/owndroid/Utils.kt +++ b/app/src/main/java/com/bintianqi/owndroid/Utils.kt @@ -70,11 +70,7 @@ val exportFilePath = MutableStateFlow(null) fun registerActivityResult(context: ComponentActivity){ getFile = context.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { activityResult -> activityResult.data.let { - if(it == null){ - Toast.makeText(context.applicationContext, R.string.file_not_exist, Toast.LENGTH_SHORT).show() - } else { - fileUriFlow.value = it.data - } + if(it != null) fileUriFlow.value = it.data } } createManagedProfile = context.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {} diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Applications.kt similarity index 100% rename from app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt rename to app/src/main/java/com/bintianqi/owndroid/dpm/Applications.kt diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt index 6e8c36a..334acde 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt @@ -165,7 +165,7 @@ fun Network(navCtrl: NavHostController) { AlertDialog( onDismissRequest = { wifiMacDialog.value = false }, confirmButton = { TextButton(onClick = { wifiMacDialog.value = false }) { Text(stringResource(R.string.confirm)) } }, - title = { Text(stringResource(R.string.wifi_mac_addr)) }, + title = { Text(stringResource(R.string.wifi_mac_address)) }, text = { val mac = dpm.getWifiMacAddress(receiver) OutlinedTextField( @@ -199,7 +199,7 @@ private fun Home(navCtrl:NavHostController, scrollState: ScrollState, wifiMacDia modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 16.dp) ) if(VERSION.SDK_INT >= 24 && (deviceOwner || dpm.isOrgProfile(receiver))) { - SubPageItem(R.string.wifi_mac_addr, "", R.drawable.wifi_fill0) { wifiMacDialog.value = true } + SubPageItem(R.string.wifi_mac_address, "", R.drawable.wifi_fill0) { wifiMacDialog.value = true } } if(VERSION.SDK_INT >= 30) { SubPageItem(R.string.options, "", R.drawable.tune_fill0) { navCtrl.navigate("Switches") } diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/System.kt similarity index 99% rename from app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt rename to app/src/main/java/com/bintianqi/owndroid/dpm/System.kt index 81b0621..4a78320 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/System.kt @@ -147,7 +147,7 @@ fun SystemManage(navCtrl: NavHostController) { TopBar(backStackEntry,navCtrl,localNavCtrl) { if(backStackEntry?.destination?.route=="Home"&&scrollState.maxValue > 100) { Text( - text = stringResource(R.string.system_manage), + text = stringResource(R.string.system), modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80) ) } @@ -196,7 +196,7 @@ private fun Home(navCtrl: NavHostController, scrollState: ScrollState) { var dialog by remember { mutableIntStateOf(0) } Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)) { Text( - text = stringResource(R.string.system_manage), + text = stringResource(R.string.system), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 16.dp) ) @@ -211,8 +211,8 @@ private fun Home(navCtrl: NavHostController, scrollState: ScrollState) { SubPageItem(R.string.bug_report, "", R.drawable.bug_report_fill0) { dialog = 2 } } if(VERSION.SDK_INT >= 28 && (deviceOwner || dpm.isOrgProfile(receiver))) { - SubPageItem(R.string.edit_time, "", R.drawable.schedule_fill0) { navCtrl.navigate("EditTime") } - SubPageItem(R.string.edit_timezone, "", R.drawable.schedule_fill0) { navCtrl.navigate("EditTimeZone") } + SubPageItem(R.string.change_time, "", R.drawable.schedule_fill0) { navCtrl.navigate("EditTime") } + SubPageItem(R.string.change_timezone, "", R.drawable.schedule_fill0) { navCtrl.navigate("EditTimeZone") } } if(VERSION.SDK_INT >= 23 && (deviceOwner || profileOwner)) { SubPageItem(R.string.permission_policy, "", R.drawable.key_fill0) { navCtrl.navigate("PermissionPolicy") } @@ -438,13 +438,13 @@ private fun EditTime() { var inputTime by remember { mutableStateOf("") } Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())) { Spacer(Modifier.padding(vertical = 10.dp)) - Text(text = stringResource(R.string.edit_time), style = typography.headlineLarge) + Text(text = stringResource(R.string.change_time), style = typography.headlineLarge) Spacer(Modifier.padding(vertical = 5.dp)) OutlinedTextField( value = inputTime, label = { Text(stringResource(R.string.time_unit_ms)) }, onValueChange = { inputTime = it }, - supportingText = { Text(stringResource(R.string.info_edit_time)) }, + supportingText = { Text(stringResource(R.string.info_change_time)) }, keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, imeAction = ImeAction.Done), keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus() }), modifier = Modifier.fillMaxWidth() @@ -473,7 +473,7 @@ private fun EditTimeZone() { horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(Modifier.padding(vertical = 10.dp)) - Text(text = stringResource(R.string.edit_timezone), style = typography.headlineLarge, modifier = Modifier.align(Alignment.Start)) + Text(text = stringResource(R.string.change_timezone), style = typography.headlineLarge, modifier = Modifier.align(Alignment.Start)) Spacer(Modifier.padding(vertical = 5.dp)) OutlinedTextField( value = inputTimezone, diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Users.kt similarity index 97% rename from app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt rename to app/src/main/java/com/bintianqi/owndroid/dpm/Users.kt index 9c43e24..6d849c3 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Users.kt @@ -95,7 +95,7 @@ fun UserManage(navCtrl: NavHostController) { TopBar(backStackEntry, navCtrl, localNavCtrl) { if(backStackEntry?.destination?.route == "Home" && scrollState.maxValue > 100) { Text( - text = stringResource(R.string.user_manager), + text = stringResource(R.string.users), modifier = Modifier.alpha((maxOf(scrollState.value-30, 0)).toFloat() / 80) ) } @@ -134,7 +134,7 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState) { var dialog by remember { mutableIntStateOf(0) } Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)) { Text( - text = stringResource(R.string.user_manager), + text = stringResource(R.string.users), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 16.dp) ) @@ -153,7 +153,7 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState) { SubPageItem(R.string.logout_current_user, "", R.drawable.logout_fill0) { dialog = 2 } } if(deviceOwner || profileOwner) { - SubPageItem(R.string.edit_username, "", R.drawable.edit_fill0) { navCtrl.navigate("EditUsername") } + SubPageItem(R.string.change_username, "", R.drawable.edit_fill0) { navCtrl.navigate("EditUsername") } } if(VERSION.SDK_INT >= 23 && (deviceOwner || profileOwner)) { SubPageItem(R.string.change_user_icon, "", R.drawable.account_circle_fill0) { navCtrl.navigate("ChangeUserIcon") } @@ -174,9 +174,13 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState) { val um = context.getSystemService(Context.USER_SERVICE) as UserManager val list = dpm.getSecondaryUsers(receiver) Column { - Text("(" + stringResource(R.string.serial_number) + ")") - list.forEach { - Text(um.getSerialNumberForUser(it).toString()) + if(list.isEmpty()) { + Text(stringResource(R.string.no_secondary_users)) + } else { + Text("(" + stringResource(R.string.serial_number) + ")") + list.forEach { + Text(um.getSerialNumberForUser(it).toString()) + } } } } @@ -492,7 +496,7 @@ private fun Username() { var inputUsername by remember { mutableStateOf("") } Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())) { Spacer(Modifier.padding(vertical = 10.dp)) - Text(text = stringResource(R.string.edit_username), style = typography.headlineLarge) + Text(text = stringResource(R.string.change_username), style = typography.headlineLarge) Spacer(Modifier.padding(vertical = 5.dp)) OutlinedTextField( value = inputUsername, diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index d7e1bb5..ed5b259 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -125,7 +125,7 @@ - Управление системой + Syetem Отключить камеру Отключить захват экрана Отключить строку состояния @@ -143,8 +143,8 @@ Отчет об ошибке Запросить отчет об ошибке? Перезагрузить - Изменить время - Изменить часовой пояс + Change time + Change timezone Идентификатор часового пояса Автоматический часовой пояс должен быть отключен перед установкой пользовательского часового пояса. Политика разрешений @@ -214,7 +214,7 @@ Сеть - MAC-адрес Wi-Fi + MAC-адрес Wi-Fi Минимальный уровень безопасности Wi-Fi Открытая Блокировка ети, настроенной администратором @@ -305,7 +305,7 @@ - Управление приложениями + Приложения Выбор пакета Загрузка Показывать пользовательские приложения @@ -372,8 +372,6 @@ Функции в рабочем профиле ограничены. Сеть Другие подключения - Приложения - Пользователь Медиа Другое Требуется владелец устройства @@ -444,9 +442,9 @@ - Управление пользователями + Users Разрешить выход из системы - Изменить имя пользователя + Change username Сообщение о начале сеанса пользователя Сообщение об окончании сеанса пользователя Информация о пользователе @@ -465,6 +463,7 @@ User does not exist Серийный номер Secondary users + No secondary users Использовать UID Выйти из текущего пользователя Запустить в фоновом режиме @@ -543,15 +542,15 @@ - Настройки + Настройки Показывать опасные функции Цвет Material You Dark theme Follow system Black theme О приложении - Исходный код - Тема + Project homepage + Appearance Безопасность Заблокировать OwnDroid diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c55cb0c..bf82952 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -126,7 +126,7 @@ Shizuku Bağlantısı Kesildi - Sistem yöneticisi + Sistem Kamerayı devre dışı bırak Ekran görüntüsünü devre dışı bırak Durum çubuğunu devre dışı bırak @@ -144,8 +144,8 @@ Hata raporu Hata raporu iste? Yeniden başlat - Zamanı düzenle - Saat dilimini düzenle + Change time + Change timezone Saat dilimi kimliği Özel bir saat dilimi ayarlamadan önce otomatik saat dilimi devre dışı bırakılmalıdır İzin politikası @@ -215,11 +215,11 @@ - Wi-Fi MAC adresi + Wi-Fi MAC adresi Minimum Wi-Fi güvenlik seviyesi Açık Yönetici tarafından yapılandırılmış ağı kilitle - WiFi SSID politikası + Wi-Fi SSID politikası SSID listesi: Zaten mevcut Özel DNS @@ -241,7 +241,7 @@ Log file size: %1$s Delete logs Export logs - WiFi anahtar çifti + Wi-Fi anahtar çifti Anahtar çifti Tercihli ağ hizmeti Network ID @@ -302,8 +302,8 @@ Uzunluk 6 ile 64 karakter arasında olmalıdır Delete work profile - - Uygulama yöneticisi + + Uygulamalar Paket seçici Yükleniyor Kullanıcı uygulamalarını göster @@ -371,21 +371,19 @@ İş profilindeki işlevler sınırlıdır. Diğer bağlantı - Uygulamalar - Kullanıcı Medya Diğer Cihaz sahibi gerektirir Mobil ağı yapılandır - WiFi\'yi yapılandır + Wi-Fi\'yi yapılandır Veri dolaşımı 2G hücresel Ultra geniş bant radyo - WiFi yapılandırması ekle - WiFi durumunu değiştir - WiFi direct - WiFi tethering - Yönetici yapılandırılmış WiFi paylaş + Wi-Fi yapılandırması ekle + Wi-Fi durumunu değiştir + Wi-Fi direct + Wi-Fi tethering + Yönetici yapılandırılmış Wi-Fi paylaş Ağ sıfırlama Tethering yapılandır VPN yapılandır @@ -441,10 +439,10 @@ Güvenli başlangıç Hata ayıklama özellikleri - - Kullanıcı yöneticisi + + Users Enable logout - Kullanıcı adını düzenle + Change username Kullanıcı oturumunu başlat mesajı Kullanıcı oturumunu sonlandır mesajı Kullanıcı bilgisi @@ -460,6 +458,7 @@ Kullanıcı ID Kullanıcı seri numarası Secondary users + No secondary users Kullanıcı işlemi User does not exist Seri numarası @@ -538,15 +537,15 @@ Şifre sıfırlama jetonunu burada etkinleştirin. - Ayarlar + Ayarlar Show dangerous features Material You rengi Dark theme Follow system Black theme Hakkında - Kaynak kodu - Tema + Project homepage + Appearance Güvenlik OwnDroid\'u kilitle diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c4d4413..380ebd6 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -121,7 +121,7 @@ 连接Shizuku - 系统 + 系统 禁用相机 禁止屏幕捕获 禁用状态栏 @@ -139,8 +139,8 @@ 错误报告 请求错误报告? 重启 - 修改时间 - 修改时区 + 更改时间 + 更改时区 时区ID 在设置时区前需要关闭自动时区 权限策略 @@ -210,11 +210,11 @@ 网络 - Wi-Fi Mac地址 - 最低WiFi安全等级 + Wi-Fi Mac地址 + 最低Wi-Fi安全等级 开放 锁定由管理员配置的网络 - WiFi SSID策略 + Wi-Fi SSID策略 SSID列表: 已经存在 私人DNS @@ -236,7 +236,7 @@ 日志文件大小:%1$s 删除日志 导出日志 - WiFi密钥对 + Wi-Fi密钥对 密钥对 首选网络服务 网络ID @@ -297,8 +297,8 @@ 长度应在6~64个字符之间 删除工作资料 - - 应用管理 + + 应用程序 应用选择器 加载中 显示用户应用 @@ -363,8 +363,6 @@ 工作资料中部分功能无效 网络和互联网 更多连接 - 应用 - 用户 媒体 其他 需要DeviceOwner @@ -373,11 +371,11 @@ 数据漫游 使用2G(GSM) 超宽频段无线电 - 添加WiFi配置 - 修改WiFi状态 - WiFi直连 - WiFi共享 - 分享设备管理器配置的WiFi + 添加Wi-Fi配置 + 修改Wi-Fi状态 + Wi-Fi直连 + Wi-Fi共享 + 分享设备管理器配置的Wi-Fi 重置网络 配置网络共享 配置VPN @@ -433,10 +431,10 @@ 安全模式 调试功能 - - 用户管理 + + 用户 允许登出 - 修改用户名 + 更改用户名 用户会话开始消息 用户会话结束消息 用户信息 @@ -452,6 +450,7 @@ 当前UserID 当前用户序列号 次要用户 + 无次要用户 用户操作 用户不存在 序列号 @@ -530,15 +529,15 @@ 在这里激活密码重置令牌 - 设置 + 设置 显示危险功能 Material you 颜色 深色主题 跟随系统 黑色主题 关于 - 源代码 - 主题 + 项目主页 + 外观 安全 锁定OwnDroid @@ -608,7 +607,7 @@ 禁用锁屏相当于把锁屏方式设置为“无”。在已设置密码或图案时使用这个功能无效。如果在锁屏禁用时设置密码或图案,锁屏将启用 从密钥环中移除用户的凭证加密密钥。用户需要再次输入凭证才能将密钥存储回密钥环中。为了保护用户数据,用户将重新启动 打电话时不能使用此功能 - 输入以毫秒为单位的UNIX时间 + 输入以毫秒为单位的UNIX时间 设置应用申请运行时权限时的默认选择 设置内存标记扩展(Memory Tagging Extension)策略。重启设备以应用更改。 应用流式传输:当app在虚拟显示器上启动,传输这个app的视频流到附近的设备。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 56d5546..1a1b94e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -131,7 +131,7 @@ Shizuku disconnected - System manager + System Disable camera Disable screen capture Disable status bar @@ -149,8 +149,8 @@ Bug report Request bug report? Reboot - Edit time - Edit timezone + Change time + Change timezone Timezone ID Auto timezone should be disabled before set a custom timezone. Permission policy @@ -220,11 +220,11 @@ Network - Wi-Fi Mac address + Wi-Fi Mac address Minimum Wi-Fi security level Open Lockdown admin configured network - WiFi SSID policy + Wi-Fi SSID policy SSID list: Already exist Private DNS @@ -246,7 +246,7 @@ Log file size: %1$s Delete logs Export logs - WiFi keypair + Wi-Fi keypair Keypair Preferential network service Network ID @@ -310,8 +310,8 @@ The length should be between 6~64 characters Delete work profile - - App manager + + Applications Package selector Loading Show user apps @@ -377,21 +377,19 @@ Functions in work profile is limited. Network Other connection - Applications - User Media Other Require device owner Configure mobile network - Configure WiFi + Configure Wi-Fi Data roaming 2G cellular Ultra wideband radio - Add WiFi config - Change WiFi status - WiFi direct - WiFi tethering - Share admin configured WiFi + Add Wi-Fi config + Change Wi-Fi status + Wi-Fi direct + Wi-Fi tethering + Share admin configured Wi-Fi Reset network Configure tethering Configure VPN @@ -447,10 +445,10 @@ Safe boot Debug features - - User manager + + Users Enable logout - Edit username + Change username Start user session message End user session message User info @@ -466,6 +464,7 @@ UserID User serial number Secondary users + No secondary users User operation User does not exist Serial number @@ -544,15 +543,15 @@ Activate reset password token here. - Settings + Settings Show dangerous features Material you color Dark theme Follow system Black theme About - Source code - Theme + Project homepage + Appearance Security Lock OwnDroid @@ -622,7 +621,7 @@ Setting the keyguard to disabled has the same effect as choosing "None" as the screen lock type. However, this call has no effect if a password, pin or pattern is currently set.\nIf a password, pin or pattern is set after the keyguard was disabled, the keyguard stops being disabled. Evict the user\'s credential encryption key from the keyring. The user\'s credential will need to be entered again in order to derive the credential encryption key that will be stored back in the keyring for future use. In order to secure user data, the user will be stopped and restarted. You can\'t use this function if there is an ongoing call on the device. - Input UNIX time in milliseconds + Input UNIX time in milliseconds Set the default response for future runtime permission requests by applications. Set the Memory Tagging Extension policy. Reboot the device to apply changes. App streaming is when the device starts an app on a virtual display and sends a video stream of the app to nearby devices.