Support Dhizuku mode

This commit is contained in:
BinTianqi
2024-07-21 08:56:03 +08:00
parent b6d7844732
commit 8fd1d9e4fe
13 changed files with 398 additions and 300 deletions

View File

@@ -1,6 +1,5 @@
package com.bintianqi.owndroid.dpm
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.content.Context
import android.content.ServiceConnection
@@ -9,7 +8,6 @@ import android.os.Binder
import android.os.Build.VERSION
import android.os.IBinder
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Column
@@ -36,7 +34,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.bintianqi.owndroid.IUserService
import com.bintianqi.owndroid.R
import com.bintianqi.owndroid.Receiver
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import rikka.shizuku.Shizuku
@@ -46,16 +43,16 @@ private var waitGrantPermission = false
@Composable
fun ShizukuActivate() {
val context = LocalContext.current
val dpm = context.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val receiver = ComponentName(context, Receiver::class.java)
val dpm = context.getDPM()
val receiver = context.getReceiver()
val coScope = rememberCoroutineScope()
val outputTextScrollState = rememberScrollState()
var enabled by remember { mutableStateOf(false) }
var bindShizuku by remember { mutableStateOf(false) }
var outputText by remember { mutableStateOf("") }
var showDeviceAdminButton by remember { mutableStateOf(!dpm.isAdminActive(receiver)) }
var showProfileOwnerButton by remember { mutableStateOf(!isProfileOwner(dpm)) }
var showDeviceOwnerButton by remember { mutableStateOf(!isDeviceOwner(dpm)) }
var showProfileOwnerButton by remember { mutableStateOf(!dpm.isProfileOwner(context)) }
var showDeviceOwnerButton by remember { mutableStateOf(!dpm.isDeviceOwner(context)) }
var showOrgProfileOwnerButton by remember { mutableStateOf(true) }
val service by shizukuService.collectAsState()
LaunchedEffect(service) {
@@ -143,7 +140,7 @@ fun ShizukuActivate() {
outputText = service!!.execute(context.getString(R.string.dpm_activate_po_command))
outputTextScrollState.animateScrollTo(0)
delay(500)
showProfileOwnerButton = !isProfileOwner(dpm)
showProfileOwnerButton = !dpm.isProfileOwner(context)
}
},
enabled = enabled
@@ -159,7 +156,7 @@ fun ShizukuActivate() {
outputText = service!!.execute(context.getString(R.string.dpm_activate_do_command))
outputTextScrollState.animateScrollTo(0)
delay(500)
showDeviceOwnerButton = !isDeviceOwner(dpm)
showDeviceOwnerButton = !dpm.isDeviceOwner(context)
}
},
enabled = enabled
@@ -168,7 +165,7 @@ fun ShizukuActivate() {
}
}
if(VERSION.SDK_INT >= 30 && isProfileOwner(dpm) && dpm.isManagedProfile(receiver) && !dpm.isOrganizationOwnedDeviceWithManagedProfile) {
if(VERSION.SDK_INT >= 30 && dpm.isProfileOwner(context) && dpm.isManagedProfile(receiver) && !dpm.isOrganizationOwnedDeviceWithManagedProfile) {
AnimatedVisibility(showOrgProfileOwnerButton) {
Button(
onClick = {