From b71f0dbb8de91252ca7496da96225f74d6137808 Mon Sep 17 00:00:00 2001 From: BinTianqi Date: Mon, 6 May 2024 16:33:57 +0800 Subject: [PATCH] navigate to home after successfully activate device admin --- app/src/main/java/com/bintianqi/owndroid/MainActivity.kt | 6 ++++++ app/src/main/java/com/bintianqi/owndroid/Receiver.kt | 1 - app/src/main/java/com/bintianqi/owndroid/dpm/DPM.kt | 1 + app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt | 4 +--- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt index 55be95d..b35ca4e 100644 --- a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt +++ b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt @@ -63,6 +63,12 @@ class MainActivity : ComponentActivity() { createManagedProfile = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if(it.resultCode==Activity.RESULT_CANCELED){Toast.makeText(applicationContext, "用户已取消", Toast.LENGTH_SHORT).show()} } + addDeviceAdmin = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + val myDpm = applicationContext.getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager + if(myDpm.isAdminActive(ComponentName(applicationContext, Receiver::class.java))){ + backToHome = true + } + } } override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() diff --git a/app/src/main/java/com/bintianqi/owndroid/Receiver.kt b/app/src/main/java/com/bintianqi/owndroid/Receiver.kt index bb8576c..cfb5c54 100644 --- a/app/src/main/java/com/bintianqi/owndroid/Receiver.kt +++ b/app/src/main/java/com/bintianqi/owndroid/Receiver.kt @@ -19,7 +19,6 @@ class Receiver : DeviceAdminReceiver() { val myComponent = ComponentName(context, this::class.java) if(myDpm.isAdminActive(myComponent)||isProfileOwner(myDpm)||isDeviceOwner(myDpm)){ Toast.makeText(context, context.getString(R.string.onEnabled), Toast.LENGTH_SHORT).show() - if(myDpm.isAdminActive(myComponent)&&!isProfileOwner(myDpm)&&!isDeviceOwner(myDpm)){ backToHome=true } } } diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/DPM.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/DPM.kt index 174a76e..86228b6 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/DPM.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/DPM.kt @@ -13,6 +13,7 @@ lateinit var getCaCert: ActivityResultLauncher lateinit var createManagedProfile: ActivityResultLauncher lateinit var getApk: ActivityResultLauncher lateinit var getUserIcon: ActivityResultLauncher +lateinit var addDeviceAdmin: ActivityResultLauncher var userIconUri: Uri? = null var apkUri: Uri? = null 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 f5da565..8e9b245 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt @@ -28,7 +28,6 @@ import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp -import androidx.core.content.ContextCompat.startActivity import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -36,7 +35,6 @@ import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import com.bintianqi.owndroid.R import com.bintianqi.owndroid.Receiver -import com.bintianqi.owndroid.backToHome import com.bintianqi.owndroid.ui.* import com.bintianqi.owndroid.ui.theme.bgColor import kotlinx.coroutines.delay @@ -559,7 +557,7 @@ private fun activateDeviceAdmin(inputContext:Context,inputComponent:ComponentNam val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN) intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, inputComponent) intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, inputContext.getString(R.string.activate_device_admin_here)) - startActivity(inputContext,intent,null) + addDeviceAdmin.launch(intent) }catch(e:ActivityNotFoundException){ Toast.makeText(inputContext,inputContext.getString(R.string.unsupported),Toast.LENGTH_SHORT).show() }