diff --git a/app/src/main/java/com/bintianqi/owndroid/Utils.kt b/app/src/main/java/com/bintianqi/owndroid/Utils.kt
index dc244ca..2707ac1 100644
--- a/app/src/main/java/com/bintianqi/owndroid/Utils.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/Utils.kt
@@ -14,6 +14,7 @@ import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
+import androidx.annotation.StringRes
import com.bintianqi.owndroid.dpm.addDeviceAdmin
import com.bintianqi.owndroid.dpm.createManagedProfile
import kotlinx.coroutines.flow.MutableStateFlow
@@ -121,3 +122,8 @@ fun formatFileSize(bytes: Long): String {
else -> "$bytes bytes"
}
}
+
+@StringRes
+fun Boolean.yesOrNo(): Int {
+ return if(this) R.string.yes else R.string.no
+}
diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt
index e43e928..6637749 100644
--- a/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt
@@ -192,7 +192,7 @@ private fun CreateWorkProfile() {
if(VERSION.SDK_INT >= 24) { intent.putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, skipEncrypt) }
if(VERSION.SDK_INT >= 33) { intent.putExtra(EXTRA_PROVISIONING_ALLOW_OFFLINE, offlineProvisioning) }
createManagedProfile.launch(intent)
- } catch(e:ActivityNotFoundException) {
+ } catch(_:ActivityNotFoundException) {
Toast.makeText(context, R.string.unsupported, Toast.LENGTH_SHORT).show()
}
},
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 fed6e39..3702ed1 100644
--- a/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt
@@ -162,7 +162,7 @@ fun Network(navCtrl: NavHostController) {
val mac = dpm.getWifiMacAddress(receiver)
OutlinedTextField(
value = mac ?: stringResource(R.string.none),
- onValueChange = {}, readOnly = true, modifier = Modifier.fillMaxWidth(), textStyle = typography.titleMedium,
+ onValueChange = {}, readOnly = true, modifier = Modifier.fillMaxWidth(), textStyle = typography.bodyLarge,
trailingIcon = {
if(mac != null) IconButton(onClick = { writeClipBoard(context, mac) }) {
Icon(painter = painterResource(R.drawable.content_copy_fill0), contentDescription = stringResource(R.string.copy))
diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt
index e1445b8..3084454 100644
--- a/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt
@@ -81,11 +81,13 @@ import androidx.navigation.compose.rememberNavController
import com.bintianqi.owndroid.R
import com.bintianqi.owndroid.toggle
import com.bintianqi.owndroid.ui.Animations
+import com.bintianqi.owndroid.ui.CardItem
import com.bintianqi.owndroid.ui.CheckBoxItem
import com.bintianqi.owndroid.ui.Information
import com.bintianqi.owndroid.ui.RadioButtonItem
import com.bintianqi.owndroid.ui.SubPageItem
import com.bintianqi.owndroid.ui.TopBar
+import com.bintianqi.owndroid.yesOrNo
@Composable
fun Password(navCtrl: NavHostController) {
@@ -265,24 +267,18 @@ private fun PasswordInfo() {
Spacer(Modifier.padding(vertical = 5.dp))
if(VERSION.SDK_INT >= 29) {
val passwordComplexity = mapOf(
- PASSWORD_COMPLEXITY_NONE to stringResource(R.string.password_complexity_none),
- PASSWORD_COMPLEXITY_LOW to stringResource(R.string.password_complexity_low),
- PASSWORD_COMPLEXITY_MEDIUM to stringResource(R.string.password_complexity_medium),
- PASSWORD_COMPLEXITY_HIGH to stringResource(R.string.password_complexity_high)
+ PASSWORD_COMPLEXITY_NONE to R.string.password_complexity_none,
+ PASSWORD_COMPLEXITY_LOW to R.string.password_complexity_low,
+ PASSWORD_COMPLEXITY_MEDIUM to R.string.password_complexity_medium,
+ PASSWORD_COMPLEXITY_HIGH to R.string.password_complexity_high
)
- val pwdComplex = passwordComplexity[dpm.passwordComplexity]
- Text(text = stringResource(R.string.current_password_complexity_is, pwdComplex?:stringResource(R.string.unknown)))
+ CardItem(R.string.current_password_complexity, passwordComplexity[dpm.passwordComplexity] ?: R.string.unknown)
}
if(deviceOwner || profileOwner) {
- Text(stringResource(R.string.is_password_sufficient, dpm.isActivePasswordSufficient))
- }
- if(context.isDeviceAdmin) {
- val pwdFailedAttempts = dpm.currentFailedPasswordAttempts
- Text(text = stringResource(R.string.password_failed_attempts_is, pwdFailedAttempts))
+ CardItem(R.string.password_sufficient, dpm.isActivePasswordSufficient.yesOrNo())
}
if(VERSION.SDK_INT >= 28 && profileOwner && dpm.isManagedProfile(receiver)) {
- val unifiedPwd = dpm.isUsingUnifiedPassword(receiver)
- Text(stringResource(R.string.is_using_unified_password, unifiedPwd))
+ CardItem(R.string.unified_password, dpm.isUsingUnifiedPassword(receiver).yesOrNo())
}
}
}
diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt
index f5f1889..e924005 100644
--- a/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt
@@ -29,7 +29,6 @@ import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
-import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
@@ -40,6 +39,7 @@ import com.bintianqi.owndroid.R
import com.bintianqi.owndroid.backToHomeStateFlow
import com.bintianqi.owndroid.ui.*
import com.bintianqi.owndroid.writeClipBoard
+import com.bintianqi.owndroid.yesOrNo
import com.rosan.dhizuku.api.Dhizuku
import com.rosan.dhizuku.api.DhizukuRequestPermissionListener
import kotlinx.coroutines.launch
@@ -480,50 +480,29 @@ fun DeviceInfo() {
Text(text = stringResource(R.string.device_info), style = typography.headlineLarge)
Spacer(Modifier.padding(vertical = 5.dp))
if(VERSION.SDK_INT>=34 && (context.isDeviceOwner || dpm.isOrgProfile(receiver))) {
- val financed = dpm.isDeviceFinanced
- Text(stringResource(R.string.is_device_financed, financed))
+ CardItem(R.string.financed_device, dpm.isDeviceFinanced.yesOrNo())
}
- Spacer(Modifier.padding(vertical = 2.dp))
if(VERSION.SDK_INT >= 33) {
val dpmRole = dpm.devicePolicyManagementRoleHolderPackage
- Text(stringResource(R.string.dpmrh, if(dpmRole == null) stringResource(R.string.none) else ""))
- if(dpmRole!=null) {
- SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState())) {
- Text(text = dpmRole)
- }
- }
+ CardItem(R.string.dpmrh, if(dpmRole == null) stringResource(R.string.none) else dpmRole)
}
- Spacer(Modifier.padding(vertical = 2.dp))
val encryptionStatus = mutableMapOf(
- DevicePolicyManager.ENCRYPTION_STATUS_INACTIVE to stringResource(R.string.es_inactive),
- DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE to stringResource(R.string.es_active),
- DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED to stringResource(R.string.es_unsupported)
+ DevicePolicyManager.ENCRYPTION_STATUS_INACTIVE to R.string.es_inactive,
+ DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE to R.string.es_active,
+ DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED to R.string.es_unsupported
)
- if(VERSION.SDK_INT >= 23) { encryptionStatus[DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY] = stringResource(R.string.es_active_default_key) }
- if(VERSION.SDK_INT >= 24) { encryptionStatus[DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_PER_USER] = stringResource(R.string.es_active_per_user) }
- Text(stringResource(R.string.encrypt_status_is, encryptionStatus[dpm.storageEncryptionStatus] ?: ""))
- Spacer(Modifier.padding(vertical = 2.dp))
+ if(VERSION.SDK_INT >= 23) { encryptionStatus[DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY] = R.string.es_active_default_key }
+ if(VERSION.SDK_INT >= 24) { encryptionStatus[DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_PER_USER] = R.string.es_active_per_user }
+ CardItem(R.string.encryption_status, encryptionStatus[dpm.storageEncryptionStatus] ?: R.string.unknown)
if(VERSION.SDK_INT >= 28) {
- Text(stringResource(R.string.support_device_id_attestation, dpm.isDeviceIdAttestationSupported))
+ CardItem(R.string.support_device_id_attestation, dpm.isDeviceIdAttestationSupported.yesOrNo())
}
- Spacer(Modifier.padding(vertical = 2.dp))
if (VERSION.SDK_INT >= 30) {
- Text(stringResource(R.string.support_unique_device_attestation, dpm.isUniqueDeviceAttestationSupported))
+ CardItem(R.string.support_unique_device_attestation, dpm.isUniqueDeviceAttestationSupported.yesOrNo())
}
- Spacer(Modifier.padding(vertical = 2.dp))
val adminList = dpm.activeAdmins
- if(adminList!=null) {
- var adminListText = ""
- Text(text = stringResource(R.string.activated_device_admin, adminList.size))
- var count = adminList.size
- for(each in adminList) {
- count -= 1
- adminListText += "${each.packageName}/${each.className}"
- if(count>0) {adminListText += "\n"}
- }
- SelectionContainer(modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp).horizontalScroll(rememberScrollState())) {
- Text(text = adminListText)
- }
+ if(adminList != null) {
+ CardItem(R.string.activated_device_admin, adminList.map { it.flattenToShortString() }.joinToString("\n"))
}
}
}
@@ -692,9 +671,9 @@ private fun TransformOwnership() {
Button(
onClick = {
try {
- dpm.transferOwnership(receiver,ComponentName(pkg, cls),null)
+ dpm.transferOwnership(receiver, ComponentName(pkg, cls),null)
Toast.makeText(context, R.string.success, Toast.LENGTH_SHORT).show()
- }catch(e:IllegalArgumentException) {
+ } catch(_:IllegalArgumentException) {
Toast.makeText(context, R.string.failed, Toast.LENGTH_SHORT).show()
}
},
@@ -712,7 +691,7 @@ private fun activateDeviceAdmin(inputContext:Context,inputComponent:ComponentNam
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, inputComponent)
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, inputContext.getString(R.string.activate_device_admin_here))
addDeviceAdmin.launch(intent)
- }catch(e:ActivityNotFoundException) {
+ } catch(_:ActivityNotFoundException) {
Toast.makeText(inputContext, R.string.unsupported, Toast.LENGTH_SHORT).show()
}
}
diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt
index 968b457..4b546ad 100644
--- a/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt
@@ -282,7 +282,7 @@ private fun Switches() {
SwitchItem(R.string.require_auto_time, "", R.drawable.schedule_fill0, { dpm.autoTimeRequired}, { dpm.setAutoTimeRequired(receiver,it) }, padding = false)
}
}
- if(deviceOwner || profileOwner) {
+ if(deviceOwner || (profileOwner && (VERSION.SDK_INT < 24 || (VERSION.SDK_INT >= 24 && !dpm.isManagedProfile(receiver))))) {
SwitchItem(R.string.master_mute, "", R.drawable.volume_up_fill0,
{ dpm.isMasterVolumeMuted(receiver) }, { dpm.setMasterVolumeMuted(receiver,it) }, padding = false
)
@@ -302,16 +302,10 @@ private fun Switches() {
{ dpm.isCommonCriteriaModeEnabled(receiver) }, { dpm.setCommonCriteriaModeEnabled(receiver,it) }, padding = false
)
}
- if(VERSION.SDK_INT >= 31 && (deviceOwner || dpm.isOrgProfile(receiver))) {
+ if(VERSION.SDK_INT >= 31 && (deviceOwner || dpm.isOrgProfile(receiver)) && dpm.canUsbDataSignalingBeDisabled()) {
SwitchItem(
- R.string.usb_signal, "", R.drawable.usb_fill0, { dpm.isUsbDataSignalingEnabled },
- {
- if(dpm.canUsbDataSignalingBeDisabled()) {
- dpm.isUsbDataSignalingEnabled = it
- } else {
- Toast.makeText(context, R.string.unsupported, Toast.LENGTH_SHORT).show()
- }
- }, padding = false
+ R.string.disable_usb_signal, "", R.drawable.usb_fill0, { !dpm.isUsbDataSignalingEnabled },
+ { dpm.isUsbDataSignalingEnabled = !it }, padding = false
)
}
Spacer(Modifier.padding(vertical = 30.dp))
diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt
index 5b1956b..dd71f4f 100644
--- a/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt
@@ -56,7 +56,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
-import androidx.core.os.UserManagerCompat
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
@@ -67,11 +66,13 @@ import com.bintianqi.owndroid.fileUriFlow
import com.bintianqi.owndroid.getFile
import com.bintianqi.owndroid.toggle
import com.bintianqi.owndroid.ui.Animations
+import com.bintianqi.owndroid.ui.CardItem
import com.bintianqi.owndroid.ui.CheckBoxItem
import com.bintianqi.owndroid.ui.SubPageItem
import com.bintianqi.owndroid.ui.SwitchItem
import com.bintianqi.owndroid.ui.TopBar
import com.bintianqi.owndroid.uriToStream
+import com.bintianqi.owndroid.yesOrNo
@Composable
fun UserManage(navCtrl: NavHostController) {
@@ -171,24 +172,20 @@ private fun CurrentUserInfo() {
Spacer(Modifier.padding(vertical = 10.dp))
Text(text = stringResource(R.string.user_info), style = typography.headlineLarge)
Spacer(Modifier.padding(vertical = 5.dp))
- Text(stringResource(R.string.is_user_unlocked, UserManagerCompat.isUserUnlocked(context)))
- if(VERSION.SDK_INT >= 24) { Text(stringResource(R.string.is_support_multi_user, UserManager.supportsMultipleUsers())) }
- if(VERSION.SDK_INT >= 23) { Text(text = stringResource(R.string.is_system_user, userManager.isSystemUser)) }
- if(VERSION.SDK_INT >= 34) { Text(text = stringResource(R.string.is_admin_user, userManager.isAdminUser)) }
- if(VERSION.SDK_INT >= 31) { Text(text = stringResource(R.string.is_headless_system_user, UserManager.isHeadlessSystemUserMode())) }
- Spacer(Modifier.padding(vertical = 5.dp))
+ if(VERSION.SDK_INT >= 24) CardItem(R.string.support_multiuser, UserManager.supportsMultipleUsers().yesOrNo())
+ if(VERSION.SDK_INT >= 23) CardItem(R.string.system_user, userManager.isSystemUser.yesOrNo())
+ if(VERSION.SDK_INT >= 34) CardItem(R.string.admin_user, userManager.isAdminUser.yesOrNo())
+ if(VERSION.SDK_INT >= 31) CardItem(R.string.headless_system_user, UserManager.isHeadlessSystemUserMode().yesOrNo())
if (VERSION.SDK_INT >= 28) {
- val logoutable = dpm.isLogoutEnabled
- Text(text = stringResource(R.string.user_can_logout, logoutable))
+ CardItem(R.string.logout_enabled, dpm.isLogoutEnabled.yesOrNo())
if(context.isDeviceOwner || context.isProfileOwner) {
- val ephemeralUser = dpm.isEphemeralUser(receiver)
- Text(text = stringResource(R.string.is_ephemeral_user, ephemeralUser))
+ CardItem(R.string.ephemeral_user, dpm.isEphemeralUser(receiver).yesOrNo())
}
- Text(text = stringResource(R.string.is_affiliated_user, dpm.isAffiliatedUser))
+ CardItem(R.string.affiliated_user, dpm.isAffiliatedUser.yesOrNo())
}
- Spacer(Modifier.padding(vertical = 5.dp))
- Text(text = stringResource(R.string.user_id_is, Binder.getCallingUid() / 100000))
- Text(text = stringResource(R.string.user_serial_number_is, userManager.getSerialNumberForUser(Process.myUserHandle())))
+ CardItem(R.string.user_id, (Binder.getCallingUid() / 100000).toString())
+ CardItem(R.string.user_serial_number, userManager.getSerialNumberForUser(Process.myUserHandle()).toString())
+ Spacer(Modifier.padding(vertical = 30.dp))
}
}
@@ -270,7 +267,7 @@ private fun UserOperation() {
try{
val result = dpm.stopUser(receiver,userHandleById)
Toast.makeText(context, userOperationResultCode(result,context), Toast.LENGTH_SHORT).show()
- }catch(e:IllegalArgumentException) {
+ }catch(_: IllegalArgumentException) {
Toast.makeText(context, R.string.failed, Toast.LENGTH_SHORT).show()
}
},
diff --git a/app/src/main/java/com/bintianqi/owndroid/ui/Components.kt b/app/src/main/java/com/bintianqi/owndroid/ui/Components.kt
index c913cbb..2e76b4f 100644
--- a/app/src/main/java/com/bintianqi/owndroid/ui/Components.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/ui/Components.kt
@@ -7,6 +7,7 @@ import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme.colorScheme
import androidx.compose.material3.MaterialTheme.typography
@@ -18,6 +19,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavHostController
@@ -223,3 +225,18 @@ fun CopyTextButton(@StringRes label: Int, content: String) {
}
}
}
+
+@Composable
+fun CardItem(@StringRes title: Int, @StringRes text: Int) {
+ CardItem(title, stringResource(text))
+}
+
+@Composable
+fun CardItem(@StringRes title: Int, text: String) {
+ Card(modifier = Modifier.fillMaxWidth().padding(vertical = 6.dp)) {
+ Text(text = stringResource(title), style = typography.titleLarge, modifier = Modifier.padding(start = 8.dp, top = 6.dp))
+ SelectionContainer {
+ Text(text = text, modifier = Modifier.padding(start = 8.dp, bottom = 6.dp))
+ }
+ }
+}
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index e1c7e81..d97e1b5 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -55,6 +55,8 @@
Hesap
Warning
Delete
+ Yes
+ No
Etkinleştirmek İçin Tıklayın
@@ -66,10 +68,10 @@
Reset device policy
Cihaz Yöneticisini Etkinleştir
Cihaz Bilgisi
- Cihaz Kimliği Doğrulama Desteği: %1$s
- Benzersiz Cihaz Doğrulama Desteği: %1$s
- Finansmanlı Cihaz: %1$s
- Cihaz Politikası Yönetim Rolü: %1$s
+ Cihaz Kimliği Doğrulama Desteği
+ Benzersiz Cihaz Doğrulama Desteği
+ Finansmanlı Cihaz
+ Cihaz Politikası Yönetim Rolü
Devre Dışı
@@ -77,7 +79,7 @@
Desteklenmiyor
Aktif(Varsayılan Anahtar)
Aktif(Kullanıcı Başına)
- Aktif Cihaz Yöneticileri: %1$s
+ Aktif Cihaz Yöneticileri
Kayıt Özel Kimliği
Organizasyon Adı
Hesap Yönetimini Devre Dışı Bırak
@@ -130,7 +132,7 @@
Yedekleme servisi
Bluetooth kişi paylaşımını devre dışı bırak
Ortak kriter modu
- USB sinyali
+ USB sinyali
Ekran kilidi
Ekranı şimdi kilitle
Kimlik doğrulama şifreleme anahtarını çıkar
@@ -185,7 +187,7 @@
Sessizce sil
All data on your device will be ERASED
Your work profile will be DELETED
- Şifreleme durumu: %1$s
+ Encryption status
FRP politikası
Fabrika ayarlarına sıfırlama koruma politikası
FRP politikası bu cihazda desteklenmiyor
@@ -440,16 +442,15 @@
Kullanıcı oturumunu başlat mesajı
Kullanıcı oturumunu sonlandır mesajı
Kullanıcı bilgisi
- Kullanıcı kilidi açıldı: %1$s
- Çoklu kullanıcı desteği: %1$s
- Sistem kullanıcısı: %1$s
- Yönetici kullanıcısı: %1$s
- Başsız sistem kullanıcısı: %1$s
- Kullanıcı çıkış yapabilir: %1$s
- Geçici kullanıcı: %1$s
- Bağlı kullanıcı: %1$s
- Kullanıcı ID: %1$s
- Kullanıcı seri numarası: %1$s
+ Çoklu kullanıcı desteği
+ Sistem kullanıcısı
+ Yönetici kullanıcısı
+ Başsız sistem kullanıcısı
+ Logout enabled
+ Geçici kullanıcı
+ Bağlı kullanıcı
+ Kullanıcı ID
+ Kullanıcı seri numarası
Kullanıcı işlemi
Seri numarası
UID kullan
@@ -491,10 +492,9 @@
Düşük (Hareket şifresi ve karakter tekrarı izinli)
Orta (Tekrar yasak, en az 4 karakter)
Yüksek (Tekrar yasak, en az 6 karakter)
- Mevcut şifre karmaşıklığı: %1$s
- Şifre karmaşıklığı yeterli mi: %1$s
- Başarısız şifre denemeleri: %1$s
- Birleşik şifre: %1$s
+ Mevcut şifre karmaşıklığı
+ Şifre karmaşıklığı yeterli mi
+ Birleşik şifre
Şifre sıfırlama jetonu
Token
The token must be longer than 32-byte
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index aabf13c..d3a460b 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -52,6 +52,8 @@
账户
警告
删除
+ 是
+ 否
点击以激活
@@ -63,16 +65,16 @@
Dhizuku将被停用
激活Device admin
设备信息
- 支持设备ID认证:%1$s
- 支持唯一设备认证:%1$s
- Financed device: %1$s
- 设备策略管理器角色(DPMRH):%1$s
+ 支持设备ID认证
+ 支持唯一设备认证
+ Financed device
+ 设备策略管理器角色
未使用
正在使用
不支持
使用默认密钥
每个用户分别加密
- 激活的Device admin: %1$s
+ 激活的Device admin
设备注册专用ID
组织名称
禁用账号管理
@@ -125,7 +127,7 @@
备份服务
禁止蓝牙分享联系人
通用标准模式
- USB信号
+ 禁用USB信号
锁屏
立即锁屏
移除凭证加密密钥
@@ -180,7 +182,7 @@
静默清除
你的设备上的所有数据将会被清除
你的工作资料将会被删除
- 加密状态:%1$s
+ 加密状态
FRP策略
恢复出厂设置保护策略
这个设备不支持恢复出厂设置保护策略
@@ -432,16 +434,15 @@
用户会话开始消息
用户会话结束消息
用户信息
- 用户已解锁:%1$s
- 支持多用户:%1$s
- 系统用户:%1$s
- 管理员用户:%1$s
- 无头系统用户: %1$s
- 用户可以退出 : %1$s
- 临时用户: %1$s
- 附属用户: %1$s
- 当前UserID:%1$s
- 当前用户序列号:%1$s
+ 支持多用户
+ 系统用户
+ 管理员用户
+ 无头系统用户
+ 用户可登出
+ 临时用户
+ 附属用户
+ 当前UserID
+ 当前用户序列号
用户操作
序列号
使用UID
@@ -483,10 +484,9 @@
低(允许图案和连续性)
中(无连续性,至少4位)
高(无连续性,至少6位)
- 当前密码复杂度:%1$s
- 密码达到要求:%1$s
- 密码已错误次数:%1$s
- 个人与工作应用密码一致:%1$s
+ 当前密码复杂度
+ 密码符合复杂度要求
+ 一致的密码
密码重置令牌
令牌
令牌必须大于32字节
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b78e15c..69b990a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -55,6 +55,8 @@
Account
Warning
Delete
+ Yes
+ No
Click to activate
@@ -68,17 +70,17 @@
dpm set-active-admin com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
dpm set-device-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
Device info
- Support Device ID attestation: %1$s
- Support unique device attestation: %1$s
- Financed device: %1$s
- Device policy management role holder: %1$s
+ Support Device ID attestation
+ Support unique device attestation
+ Financed device
+ Device policy management role holder
Inactive
Active
Unsupported
Active(default key)
Active(per-user)
- Active device admins: %1$s
+ Active device admins
Enrollment specific ID
Organization name
Disable account management
@@ -134,7 +136,7 @@
Backup service
Disable bluetooth contact sharing
Common criteria mode
- USB signal
+ Disable USB signal
Keyguard
Lock screen now
Evict credential encryption key
@@ -188,7 +190,7 @@
Wipe silently
All data on your device will be ERASED
Your work profile will be DELETED
- Encrypt status: %1$s
+ Encryption status
FRP policy
Factory reset protection policy
FRP policy is not supported on this device
@@ -445,16 +447,15 @@
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
+ Support multiuser
+ System user
+ Admin user
+ Headless system user
+ Logout enabled
+ Ephemeral user
+ Affiliated user
+ UserID
+ User serial number
User operation
Serial number
Use UID
@@ -496,10 +497,9 @@
Low (Gesture password and characters repetition allowed)
Medium (Repetition disallowed, 4 characters at least)
High (Repetition disallowed, 6 characters at least)
- Current password complexity: %1$s
- Is password complexity sufficient: %1$s
- Password failed attempts: %1$s
- Unified password: %1$s
+ Current password complexity
+ Password complexity sufficient
+ Unified password
Reset password token
Token
The token must be longer than 32-byte