mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
add a warning when deactivating Dhizuku
This commit is contained in:
@@ -2,7 +2,6 @@ package com.bintianqi.owndroid
|
|||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.ComponentName
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.bintianqi.owndroid.dpm.getDPM
|
import com.bintianqi.owndroid.dpm.getDPM
|
||||||
|
|||||||
@@ -112,8 +112,12 @@ class MainActivity : FragmentActivity() {
|
|||||||
showAuth.value = true
|
showAuth.value = true
|
||||||
}
|
}
|
||||||
if (sharedPref.getBoolean("dhizuku", false)) {
|
if (sharedPref.getBoolean("dhizuku", false)) {
|
||||||
if (!Dhizuku.init(applicationContext)) { dhizukuErrorStatus.value = 1 }
|
if (Dhizuku.init(applicationContext)) {
|
||||||
if (!Dhizuku.isPermissionGranted()) { dhizukuErrorStatus.value = 2 }
|
if (!Dhizuku.isPermissionGranted()) { dhizukuErrorStatus.value = 2 }
|
||||||
|
} else {
|
||||||
|
sharedPref.edit().putBoolean("dhizuku", false).apply()
|
||||||
|
dhizukuErrorStatus.value = 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ class Receiver : DeviceAdminReceiver() {
|
|||||||
|
|
||||||
override fun onDisabled(context: Context, intent: Intent) {
|
override fun onDisabled(context: Context, intent: Intent) {
|
||||||
super.onDisabled(context, intent)
|
super.onDisabled(context, intent)
|
||||||
|
backToHomeStateFlow.value = true
|
||||||
Toast.makeText(context, R.string.onDisabled, Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, R.string.onDisabled, Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import android.app.admin.PackagePolicy
|
|||||||
import android.app.admin.PackagePolicy.PACKAGE_POLICY_ALLOWLIST
|
import android.app.admin.PackagePolicy.PACKAGE_POLICY_ALLOWLIST
|
||||||
import android.app.admin.PackagePolicy.PACKAGE_POLICY_ALLOWLIST_AND_SYSTEM
|
import android.app.admin.PackagePolicy.PACKAGE_POLICY_ALLOWLIST_AND_SYSTEM
|
||||||
import android.app.admin.PackagePolicy.PACKAGE_POLICY_BLOCKLIST
|
import android.app.admin.PackagePolicy.PACKAGE_POLICY_BLOCKLIST
|
||||||
import android.content.ComponentName
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager.NameNotFoundException
|
import android.content.pm.PackageManager.NameNotFoundException
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
@@ -80,7 +79,6 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.InstallAppActivity
|
import com.bintianqi.owndroid.InstallAppActivity
|
||||||
import com.bintianqi.owndroid.PackageInstallerReceiver
|
import com.bintianqi.owndroid.PackageInstallerReceiver
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
|
||||||
import com.bintianqi.owndroid.fileUriFlow
|
import com.bintianqi.owndroid.fileUriFlow
|
||||||
import com.bintianqi.owndroid.getFile
|
import com.bintianqi.owndroid.getFile
|
||||||
import com.bintianqi.owndroid.toText
|
import com.bintianqi.owndroid.toText
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ import androidx.navigation.compose.composable
|
|||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
|
||||||
import com.bintianqi.owndroid.ui.Animations
|
import com.bintianqi.owndroid.ui.Animations
|
||||||
import com.bintianqi.owndroid.ui.CheckBoxItem
|
import com.bintianqi.owndroid.ui.CheckBoxItem
|
||||||
import com.bintianqi.owndroid.ui.CopyTextButton
|
import com.bintianqi.owndroid.ui.CopyTextButton
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import android.app.admin.DevicePolicyManager.WIFI_SECURITY_PERSONAL
|
|||||||
import android.app.admin.WifiSsidPolicy
|
import android.app.admin.WifiSsidPolicy
|
||||||
import android.app.admin.WifiSsidPolicy.WIFI_SSID_POLICY_TYPE_ALLOWLIST
|
import android.app.admin.WifiSsidPolicy.WIFI_SSID_POLICY_TYPE_ALLOWLIST
|
||||||
import android.app.admin.WifiSsidPolicy.WIFI_SSID_POLICY_TYPE_DENYLIST
|
import android.app.admin.WifiSsidPolicy.WIFI_SSID_POLICY_TYPE_DENYLIST
|
||||||
import android.content.ComponentName
|
|
||||||
import android.net.wifi.WifiSsid
|
import android.net.wifi.WifiSsid
|
||||||
import android.os.Build.VERSION
|
import android.os.Build.VERSION
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
@@ -88,7 +87,6 @@ import androidx.navigation.compose.composable
|
|||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
|
||||||
import com.bintianqi.owndroid.toText
|
import com.bintianqi.owndroid.toText
|
||||||
import com.bintianqi.owndroid.ui.Animations
|
import com.bintianqi.owndroid.ui.Animations
|
||||||
import com.bintianqi.owndroid.ui.RadioButtonItem
|
import com.bintianqi.owndroid.ui.RadioButtonItem
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_SOMETHING
|
|||||||
import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
|
import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
|
||||||
import android.app.admin.DevicePolicyManager.RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT
|
import android.app.admin.DevicePolicyManager.RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT
|
||||||
import android.app.admin.DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY
|
import android.app.admin.DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY
|
||||||
import android.content.ComponentName
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Build.VERSION
|
import android.os.Build.VERSION
|
||||||
@@ -75,7 +74,6 @@ import androidx.navigation.compose.composable
|
|||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
|
||||||
import com.bintianqi.owndroid.ui.Animations
|
import com.bintianqi.owndroid.ui.Animations
|
||||||
import com.bintianqi.owndroid.ui.CheckBoxItem
|
import com.bintianqi.owndroid.ui.CheckBoxItem
|
||||||
import com.bintianqi.owndroid.ui.Information
|
import com.bintianqi.owndroid.ui.Information
|
||||||
@@ -127,8 +125,6 @@ fun Password(navCtrl: NavHostController) {
|
|||||||
@Composable
|
@Composable
|
||||||
private fun Home(navCtrl:NavHostController,scrollState: ScrollState) {
|
private fun Home(navCtrl:NavHostController,scrollState: ScrollState) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val dpm = context.getDPM()
|
|
||||||
val receiver = context.getReceiver()
|
|
||||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)) {
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.password_and_keyguard),
|
text = stringResource(R.string.password_and_keyguard),
|
||||||
|
|||||||
@@ -36,13 +36,10 @@ import androidx.navigation.compose.composable
|
|||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
|
||||||
import com.bintianqi.owndroid.backToHomeStateFlow
|
import com.bintianqi.owndroid.backToHomeStateFlow
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.rosan.dhizuku.api.Dhizuku
|
import com.rosan.dhizuku.api.Dhizuku
|
||||||
import com.rosan.dhizuku.api.DhizukuRequestPermissionListener
|
import com.rosan.dhizuku.api.DhizukuRequestPermissionListener
|
||||||
import kotlinx.coroutines.delay
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DpmPermissions(navCtrl:NavHostController) {
|
fun DpmPermissions(navCtrl:NavHostController) {
|
||||||
@@ -223,14 +220,13 @@ private fun DeviceAdmin() {
|
|||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val dpm = context.getDPM()
|
val dpm = context.getDPM()
|
||||||
val receiver = context.getReceiver()
|
val receiver = context.getReceiver()
|
||||||
var showDeactivateButton by remember { mutableStateOf(context.isDeviceAdmin) }
|
|
||||||
var deactivateDialog by remember { mutableStateOf(false) }
|
var deactivateDialog by remember { mutableStateOf(false) }
|
||||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)) {
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)) {
|
||||||
Spacer(Modifier.padding(vertical = 10.dp))
|
Spacer(Modifier.padding(vertical = 10.dp))
|
||||||
Text(text = stringResource(R.string.device_admin), style = typography.headlineLarge)
|
Text(text = stringResource(R.string.device_admin), style = typography.headlineLarge)
|
||||||
Text(text = stringResource(if(context.isDeviceAdmin) R.string.activated else R.string.deactivated), style = typography.titleLarge)
|
Text(text = stringResource(if(context.isDeviceAdmin) R.string.activated else R.string.deactivated), style = typography.titleLarge)
|
||||||
Spacer(Modifier.padding(vertical = 5.dp))
|
Spacer(Modifier.padding(vertical = 5.dp))
|
||||||
AnimatedVisibility(showDeactivateButton) {
|
AnimatedVisibility(context.isDeviceAdmin) {
|
||||||
Button(
|
Button(
|
||||||
onClick = { deactivateDialog = true },
|
onClick = { deactivateDialog = true },
|
||||||
enabled = !context.isProfileOwner && !context.isDeviceOwner,
|
enabled = !context.isProfileOwner && !context.isDeviceOwner,
|
||||||
@@ -239,9 +235,9 @@ private fun DeviceAdmin() {
|
|||||||
Text(stringResource(R.string.deactivate))
|
Text(stringResource(R.string.deactivate))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AnimatedVisibility(!showDeactivateButton) {
|
AnimatedVisibility(!context.isDeviceAdmin) {
|
||||||
Column {
|
Column {
|
||||||
Button(onClick = {activateDeviceAdmin(context, receiver) }, modifier = Modifier.fillMaxWidth()) {
|
Button(onClick = { activateDeviceAdmin(context, receiver) }, modifier = Modifier.fillMaxWidth()) {
|
||||||
Text(stringResource(R.string.activate_jump))
|
Text(stringResource(R.string.activate_jump))
|
||||||
}
|
}
|
||||||
Spacer(Modifier.padding(vertical = 5.dp))
|
Spacer(Modifier.padding(vertical = 5.dp))
|
||||||
@@ -253,7 +249,6 @@ private fun DeviceAdmin() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(deactivateDialog) {
|
if(deactivateDialog) {
|
||||||
val co = rememberCoroutineScope()
|
|
||||||
AlertDialog(
|
AlertDialog(
|
||||||
title = { Text(stringResource(R.string.deactivate)) },
|
title = { Text(stringResource(R.string.deactivate)) },
|
||||||
onDismissRequest = { deactivateDialog = false },
|
onDismissRequest = { deactivateDialog = false },
|
||||||
@@ -268,12 +263,7 @@ private fun DeviceAdmin() {
|
|||||||
TextButton(
|
TextButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
dpm.removeActiveAdmin(receiver)
|
dpm.removeActiveAdmin(receiver)
|
||||||
co.launch{
|
|
||||||
delay(300)
|
|
||||||
deactivateDialog = false
|
deactivateDialog = false
|
||||||
showDeactivateButton = context.isDeviceAdmin
|
|
||||||
backToHomeStateFlow.value = !context.isDeviceAdmin
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Text(stringResource(R.string.confirm))
|
Text(stringResource(R.string.confirm))
|
||||||
@@ -288,7 +278,6 @@ private fun ProfileOwner() {
|
|||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val dpm = context.getDPM()
|
val dpm = context.getDPM()
|
||||||
val receiver = context.getReceiver()
|
val receiver = context.getReceiver()
|
||||||
var showDeactivateButton by remember { mutableStateOf(context.isProfileOwner) }
|
|
||||||
var deactivateDialog by remember { mutableStateOf(false) }
|
var deactivateDialog by remember { mutableStateOf(false) }
|
||||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)) {
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)) {
|
||||||
Spacer(Modifier.padding(vertical = 10.dp))
|
Spacer(Modifier.padding(vertical = 10.dp))
|
||||||
@@ -296,7 +285,7 @@ private fun ProfileOwner() {
|
|||||||
Text(stringResource(if(context.isProfileOwner) R.string.activated else R.string.deactivated), style = typography.titleLarge)
|
Text(stringResource(if(context.isProfileOwner) R.string.activated else R.string.deactivated), style = typography.titleLarge)
|
||||||
Spacer(Modifier.padding(vertical = 5.dp))
|
Spacer(Modifier.padding(vertical = 5.dp))
|
||||||
if(VERSION.SDK_INT >= 24) {
|
if(VERSION.SDK_INT >= 24) {
|
||||||
AnimatedVisibility(showDeactivateButton) {
|
if(context.isProfileOwner) {
|
||||||
Button(
|
Button(
|
||||||
onClick = { deactivateDialog = true },
|
onClick = { deactivateDialog = true },
|
||||||
enabled = !dpm.isManagedProfile(receiver),
|
enabled = !dpm.isManagedProfile(receiver),
|
||||||
@@ -306,17 +295,8 @@ private fun ProfileOwner() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AnimatedVisibility(!showDeactivateButton) {
|
|
||||||
Column {
|
|
||||||
SelectionContainer{
|
|
||||||
Text(text = stringResource(R.string.activate_profile_owner_command))
|
|
||||||
}
|
|
||||||
CopyTextButton(R.string.copy_command, stringResource(R.string.activate_profile_owner_command))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(deactivateDialog && VERSION.SDK_INT >= 24) {
|
if(deactivateDialog && VERSION.SDK_INT >= 24) {
|
||||||
val co = rememberCoroutineScope()
|
|
||||||
AlertDialog(
|
AlertDialog(
|
||||||
title = { Text(stringResource(R.string.deactivate)) },
|
title = { Text(stringResource(R.string.deactivate)) },
|
||||||
onDismissRequest = { deactivateDialog = false },
|
onDismissRequest = { deactivateDialog = false },
|
||||||
@@ -331,12 +311,7 @@ private fun ProfileOwner() {
|
|||||||
TextButton(
|
TextButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
dpm.clearProfileOwner(receiver)
|
dpm.clearProfileOwner(receiver)
|
||||||
co.launch{
|
|
||||||
delay(300)
|
|
||||||
deactivateDialog = false
|
deactivateDialog = false
|
||||||
showDeactivateButton = context.isProfileOwner
|
|
||||||
backToHomeStateFlow.value = !context.isProfileOwner
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Text(stringResource(R.string.confirm))
|
Text(stringResource(R.string.confirm))
|
||||||
@@ -350,14 +325,13 @@ private fun ProfileOwner() {
|
|||||||
private fun DeviceOwner() {
|
private fun DeviceOwner() {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val dpm = context.getDPM()
|
val dpm = context.getDPM()
|
||||||
var showDeactivateButton by remember { mutableStateOf(context.isDeviceOwner) }
|
|
||||||
var deactivateDialog by remember { mutableStateOf(false) }
|
var deactivateDialog by remember { mutableStateOf(false) }
|
||||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)) {
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)) {
|
||||||
Spacer(Modifier.padding(vertical = 10.dp))
|
Spacer(Modifier.padding(vertical = 10.dp))
|
||||||
Text(text = stringResource(R.string.device_owner), style = typography.headlineLarge)
|
Text(text = stringResource(R.string.device_owner), style = typography.headlineLarge)
|
||||||
Text(text = stringResource(if(context.isDeviceOwner) R.string.activated else R.string.deactivated), style = typography.titleLarge)
|
Text(text = stringResource(if(context.isDeviceOwner) R.string.activated else R.string.deactivated), style = typography.titleLarge)
|
||||||
Spacer(Modifier.padding(vertical = 5.dp))
|
Spacer(Modifier.padding(vertical = 5.dp))
|
||||||
AnimatedVisibility(showDeactivateButton) {
|
AnimatedVisibility(context.isDeviceOwner) {
|
||||||
Button(
|
Button(
|
||||||
onClick = { deactivateDialog = true },
|
onClick = { deactivateDialog = true },
|
||||||
colors = ButtonDefaults.buttonColors(containerColor = colorScheme.error, contentColor = colorScheme.onError)
|
colors = ButtonDefaults.buttonColors(containerColor = colorScheme.error, contentColor = colorScheme.onError)
|
||||||
@@ -365,7 +339,7 @@ private fun DeviceOwner() {
|
|||||||
Text(text = stringResource(R.string.deactivate))
|
Text(text = stringResource(R.string.deactivate))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AnimatedVisibility(!showDeactivateButton) {
|
AnimatedVisibility(!context.isDeviceOwner) {
|
||||||
Column {
|
Column {
|
||||||
SelectionContainer{
|
SelectionContainer{
|
||||||
Text(text = stringResource(R.string.activate_device_owner_command))
|
Text(text = stringResource(R.string.activate_device_owner_command))
|
||||||
@@ -375,9 +349,10 @@ private fun DeviceOwner() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(deactivateDialog) {
|
if(deactivateDialog) {
|
||||||
val co = rememberCoroutineScope()
|
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
AlertDialog(
|
AlertDialog(
|
||||||
title = { Text(stringResource(R.string.deactivate)) },
|
title = { Text(stringResource(R.string.deactivate)) },
|
||||||
|
text = { if(sharedPref.getBoolean("dhizuku", false)) Text(stringResource(R.string.dhizuku_will_be_deactivated)) },
|
||||||
onDismissRequest = { deactivateDialog = false },
|
onDismissRequest = { deactivateDialog = false },
|
||||||
dismissButton = {
|
dismissButton = {
|
||||||
TextButton(
|
TextButton(
|
||||||
@@ -390,13 +365,14 @@ private fun DeviceOwner() {
|
|||||||
TextButton(
|
TextButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
dpm.clearDeviceOwnerApp(context.dpcPackageName)
|
dpm.clearDeviceOwnerApp(context.dpcPackageName)
|
||||||
co.launch{
|
if(sharedPref.getBoolean("dhizuku", false)) {
|
||||||
delay(300)
|
if (!Dhizuku.init(context)) {
|
||||||
deactivateDialog = false
|
sharedPref.edit().putBoolean("dhizuku", false).apply()
|
||||||
showDeactivateButton = context.isDeviceOwner
|
backToHomeStateFlow.value = true
|
||||||
backToHomeStateFlow.value = !context.isDeviceOwner
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
deactivateDialog = false
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
Text(stringResource(R.string.confirm))
|
Text(stringResource(R.string.confirm))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import android.app.admin.SystemUpdatePolicy
|
|||||||
import android.app.admin.SystemUpdatePolicy.TYPE_INSTALL_AUTOMATIC
|
import android.app.admin.SystemUpdatePolicy.TYPE_INSTALL_AUTOMATIC
|
||||||
import android.app.admin.SystemUpdatePolicy.TYPE_INSTALL_WINDOWED
|
import android.app.admin.SystemUpdatePolicy.TYPE_INSTALL_WINDOWED
|
||||||
import android.app.admin.SystemUpdatePolicy.TYPE_POSTPONE
|
import android.app.admin.SystemUpdatePolicy.TYPE_POSTPONE
|
||||||
import android.content.ComponentName
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
@@ -97,7 +96,6 @@ import androidx.navigation.compose.composable
|
|||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
|
||||||
import com.bintianqi.owndroid.StopLockTaskModeReceiver
|
import com.bintianqi.owndroid.StopLockTaskModeReceiver
|
||||||
import com.bintianqi.owndroid.fileUriFlow
|
import com.bintianqi.owndroid.fileUriFlow
|
||||||
import com.bintianqi.owndroid.getFile
|
import com.bintianqi.owndroid.getFile
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package com.bintianqi.owndroid.dpm
|
|||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.admin.DevicePolicyManager
|
import android.app.admin.DevicePolicyManager
|
||||||
import android.content.ComponentName
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.BitmapFactory
|
import android.graphics.BitmapFactory
|
||||||
@@ -56,7 +55,6 @@ import androidx.navigation.compose.composable
|
|||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
|
||||||
import com.bintianqi.owndroid.fileUriFlow
|
import com.bintianqi.owndroid.fileUriFlow
|
||||||
import com.bintianqi.owndroid.getFile
|
import com.bintianqi.owndroid.getFile
|
||||||
import com.bintianqi.owndroid.toText
|
import com.bintianqi.owndroid.toText
|
||||||
@@ -108,7 +106,6 @@ fun UserManage(navCtrl: NavHostController) {
|
|||||||
@Composable
|
@Composable
|
||||||
private fun Home(navCtrl: NavHostController,scrollState: ScrollState) {
|
private fun Home(navCtrl: NavHostController,scrollState: ScrollState) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val dpm = context.getDPM()
|
|
||||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)) {
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.user_manager),
|
text = stringResource(R.string.user_manager),
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
<string name="activate_jump" tools:ignore="TypographyEllipsis">Etkinleştir...</string>
|
<string name="activate_jump" tools:ignore="TypographyEllipsis">Etkinleştir...</string>
|
||||||
<string name="profile_owner">Profil Sahibi</string>
|
<string name="profile_owner">Profil Sahibi</string>
|
||||||
<string name="device_owner">Cihaz Sahibi</string>
|
<string name="device_owner">Cihaz Sahibi</string>
|
||||||
|
<string name="dhizuku_will_be_deactivated">Dhizuku will be deactivated</string> <!--TODO-->
|
||||||
<string name="activate_device_admin">Cihaz Yöneticisini Etkinleştir</string>
|
<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>
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
<string name="activate_jump" tools:ignore="TypographyEllipsis">激活...</string>
|
<string name="activate_jump" tools:ignore="TypographyEllipsis">激活...</string>
|
||||||
<string name="profile_owner">Profile owner</string>
|
<string name="profile_owner">Profile owner</string>
|
||||||
<string name="device_owner">Device owner</string>
|
<string name="device_owner">Device owner</string>
|
||||||
|
<string name="dhizuku_will_be_deactivated">Dhizuku将被停用</string>
|
||||||
<string name="activate_device_admin">激活Device admin</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>
|
||||||
|
|||||||
@@ -63,9 +63,9 @@
|
|||||||
<string name="activate_jump" tools:ignore="TypographyEllipsis">Activate...</string>
|
<string name="activate_jump" tools:ignore="TypographyEllipsis">Activate...</string>
|
||||||
<string name="profile_owner">Profile owner</string>
|
<string name="profile_owner">Profile owner</string>
|
||||||
<string name="device_owner">Device owner</string>
|
<string name="device_owner">Device owner</string>
|
||||||
|
<string name="dhizuku_will_be_deactivated">Dhizuku will be deactivated</string>
|
||||||
<string name="activate_device_admin">Activate Device admin</string>
|
<string name="activate_device_admin">Activate Device admin</string>
|
||||||
<string name="activate_device_admin_command" translatable="false">dpm set-active-admin com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
<string name="activate_device_admin_command" translatable="false">dpm set-active-admin com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||||
<string name="activate_profile_owner_command" translatable="false">dpm set-profile-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
|
||||||
<string name="activate_device_owner_command" translatable="false">dpm set-device-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
<string name="activate_device_owner_command" translatable="false">dpm set-device-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||||
<string name="device_info">Device info</string>
|
<string name="device_info">Device info</string>
|
||||||
<string name="support_device_id_attestation">Support Device ID attestation: </string>
|
<string name="support_device_id_attestation">Support Device ID attestation: </string>
|
||||||
|
|||||||
Reference in New Issue
Block a user