mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
@@ -3,7 +3,10 @@ package com.bintianqi.owndroid.dpm
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.app.admin.DevicePolicyManager
|
import android.app.admin.DevicePolicyManager
|
||||||
|
import android.app.admin.FactoryResetProtectionPolicy
|
||||||
import android.app.admin.IDevicePolicyManager
|
import android.app.admin.IDevicePolicyManager
|
||||||
|
import android.app.admin.SystemUpdatePolicy
|
||||||
|
import android.app.admin.WifiSsidPolicy
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@@ -126,3 +129,68 @@ fun Context.getReceiver(): ComponentName {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val dhizukuErrorStatus = MutableStateFlow(0)
|
val dhizukuErrorStatus = MutableStateFlow(0)
|
||||||
|
|
||||||
|
fun Context.resetDevicePolicy() {
|
||||||
|
val dpm = getDPM()
|
||||||
|
val receiver = getReceiver()
|
||||||
|
RestrictionData.getAllRestrictions(this).forEach {
|
||||||
|
dpm.clearUserRestriction(receiver, it)
|
||||||
|
}
|
||||||
|
dpm.accountTypesWithManagementDisabled?.forEach {
|
||||||
|
dpm.setAccountManagementDisabled(receiver, it, false)
|
||||||
|
}
|
||||||
|
if (VERSION.SDK_INT >= 30) {
|
||||||
|
dpm.setConfiguredNetworksLockdownState(receiver, false)
|
||||||
|
dpm.setAutoTimeZoneEnabled(receiver, true)
|
||||||
|
dpm.setAutoTimeEnabled(receiver, true)
|
||||||
|
dpm.setCommonCriteriaModeEnabled(receiver, false)
|
||||||
|
try {
|
||||||
|
val frp = FactoryResetProtectionPolicy.Builder().setFactoryResetProtectionEnabled(false).setFactoryResetProtectionAccounts(listOf())
|
||||||
|
dpm.setFactoryResetProtectionPolicy(receiver, frp.build())
|
||||||
|
} catch(_: Exception) {}
|
||||||
|
dpm.setUserControlDisabledPackages(receiver, listOf())
|
||||||
|
}
|
||||||
|
if (VERSION.SDK_INT >= 33) {
|
||||||
|
dpm.minimumRequiredWifiSecurityLevel = DevicePolicyManager.WIFI_SECURITY_OPEN
|
||||||
|
dpm.wifiSsidPolicy = null
|
||||||
|
}
|
||||||
|
if (VERSION.SDK_INT >= 28) {
|
||||||
|
dpm.getOverrideApns(receiver).forEach { dpm.removeOverrideApn(receiver, it.id) }
|
||||||
|
dpm.setKeepUninstalledPackages(receiver, listOf())
|
||||||
|
}
|
||||||
|
dpm.setCameraDisabled(receiver, false)
|
||||||
|
dpm.setScreenCaptureDisabled(receiver, false)
|
||||||
|
dpm.setMasterVolumeMuted(receiver, false)
|
||||||
|
try {
|
||||||
|
if(VERSION.SDK_INT >= 31) dpm.isUsbDataSignalingEnabled = true
|
||||||
|
} catch (_: Exception) { }
|
||||||
|
if (VERSION.SDK_INT >= 23) {
|
||||||
|
dpm.setPermissionPolicy(receiver, DevicePolicyManager.PERMISSION_POLICY_PROMPT)
|
||||||
|
dpm.setSystemUpdatePolicy(receiver, SystemUpdatePolicy.createAutomaticInstallPolicy())
|
||||||
|
}
|
||||||
|
if (VERSION.SDK_INT >= 24) {
|
||||||
|
dpm.setAlwaysOnVpnPackage(receiver, null, false)
|
||||||
|
dpm.setPackagesSuspended(receiver, arrayOf(), false)
|
||||||
|
}
|
||||||
|
dpm.setPermittedInputMethods(receiver, null)
|
||||||
|
dpm.setPermittedAccessibilityServices(receiver, null)
|
||||||
|
packageManager.getInstalledApplications(0).forEach {
|
||||||
|
if (dpm.isUninstallBlocked(receiver, it.packageName)) dpm.setUninstallBlocked(receiver, it.packageName, false)
|
||||||
|
}
|
||||||
|
if (VERSION.SDK_INT >= 26) {
|
||||||
|
dpm.setRequiredStrongAuthTimeout(receiver, 0)
|
||||||
|
dpm.clearResetPasswordToken(receiver)
|
||||||
|
}
|
||||||
|
if (VERSION.SDK_INT >= 31) {
|
||||||
|
dpm.requiredPasswordComplexity = DevicePolicyManager.PASSWORD_COMPLEXITY_NONE
|
||||||
|
}
|
||||||
|
dpm.setKeyguardDisabledFeatures(receiver, 0)
|
||||||
|
dpm.setMaximumTimeToLock(receiver, 0)
|
||||||
|
dpm.setPasswordExpirationTimeout(receiver, 0)
|
||||||
|
dpm.setMaximumFailedPasswordsForWipe(receiver, 0)
|
||||||
|
dpm.setPasswordHistoryLength(receiver, 0)
|
||||||
|
if (VERSION.SDK_INT < 31) {
|
||||||
|
dpm.setPasswordQuality(receiver, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED)
|
||||||
|
}
|
||||||
|
dpm.setRecommendedGlobalProxy(receiver, null)
|
||||||
|
}
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ 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.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DpmPermissions(navCtrl:NavHostController) {
|
fun DpmPermissions(navCtrl:NavHostController) {
|
||||||
@@ -350,9 +353,15 @@ private fun DeviceOwner() {
|
|||||||
}
|
}
|
||||||
if(deactivateDialog) {
|
if(deactivateDialog) {
|
||||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
|
val coroutine = rememberCoroutineScope()
|
||||||
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)) },
|
text = {
|
||||||
|
Column {
|
||||||
|
if(sharedPref.getBoolean("dhizuku", false)) Text(stringResource(R.string.dhizuku_will_be_deactivated))
|
||||||
|
Text(stringResource(R.string.will_reset_policy))
|
||||||
|
}
|
||||||
|
},
|
||||||
onDismissRequest = { deactivateDialog = false },
|
onDismissRequest = { deactivateDialog = false },
|
||||||
dismissButton = {
|
dismissButton = {
|
||||||
TextButton(
|
TextButton(
|
||||||
@@ -364,6 +373,8 @@ private fun DeviceOwner() {
|
|||||||
confirmButton = {
|
confirmButton = {
|
||||||
TextButton(
|
TextButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
|
coroutine.launch {
|
||||||
|
context.resetDevicePolicy()
|
||||||
dpm.clearDeviceOwnerApp(context.dpcPackageName)
|
dpm.clearDeviceOwnerApp(context.dpcPackageName)
|
||||||
if(sharedPref.getBoolean("dhizuku", false)) {
|
if(sharedPref.getBoolean("dhizuku", false)) {
|
||||||
if (!Dhizuku.init(context)) {
|
if (!Dhizuku.init(context)) {
|
||||||
@@ -373,6 +384,7 @@ private fun DeviceOwner() {
|
|||||||
}
|
}
|
||||||
deactivateDialog = false
|
deactivateDialog = false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
Text(stringResource(R.string.confirm))
|
Text(stringResource(R.string.confirm))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ import com.bintianqi.owndroid.ui.SubPageItem
|
|||||||
import com.bintianqi.owndroid.ui.SwitchItem
|
import com.bintianqi.owndroid.ui.SwitchItem
|
||||||
import com.bintianqi.owndroid.ui.TopBar
|
import com.bintianqi.owndroid.ui.TopBar
|
||||||
|
|
||||||
private data class Restriction(
|
data class Restriction(
|
||||||
val restriction:String,
|
val restriction:String,
|
||||||
@StringRes val name:Int,
|
@StringRes val name:Int,
|
||||||
val desc:String,
|
val desc:String,
|
||||||
@@ -211,7 +211,7 @@ private fun UserRestrictionItem(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private object RestrictionData{
|
object RestrictionData {
|
||||||
fun internet(): List<Restriction>{
|
fun internet(): List<Restriction>{
|
||||||
val list:MutableList<Restriction> = mutableListOf()
|
val list:MutableList<Restriction> = mutableListOf()
|
||||||
list += Restriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, R.string.config_mobile_network, "", R.drawable.signal_cellular_alt_fill0)
|
list += Restriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, R.string.config_mobile_network, "", R.drawable.signal_cellular_alt_fill0)
|
||||||
@@ -313,4 +313,14 @@ private object RestrictionData{
|
|||||||
list += Restriction(UserManager.DISALLOW_DEBUGGING_FEATURES, R.string.debug_features, "", R.drawable.adb_fill0)
|
list += Restriction(UserManager.DISALLOW_DEBUGGING_FEATURES, R.string.debug_features, "", R.drawable.adb_fill0)
|
||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
fun getAllRestrictions(context: Context): List<String> {
|
||||||
|
val result = mutableListOf<String>()
|
||||||
|
internet().forEach { result.add(it.restriction) }
|
||||||
|
connectivity().forEach { result.add(it.restriction) }
|
||||||
|
media().forEach { result.add(it.restriction) }
|
||||||
|
application(context).forEach { result.add(it.restriction) }
|
||||||
|
user().forEach { result.add(it.restriction) }
|
||||||
|
other(context).forEach { result.add(it.restriction) }
|
||||||
|
return result
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,7 @@
|
|||||||
<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="dhizuku_will_be_deactivated">Dhizuku will be deactivated</string> <!--TODO-->
|
||||||
|
<string name="will_reset_policy">All device policies set by OwnDroid will be cleared</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="will_reset_policy">所有由OwnDroid设置的设备策略将被清除</string>
|
||||||
<string name="dhizuku_will_be_deactivated">Dhizuku将被停用</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>
|
||||||
|
|||||||
@@ -64,6 +64,7 @@
|
|||||||
<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="dhizuku_will_be_deactivated">Dhizuku will be deactivated</string>
|
||||||
|
<string name="will_reset_policy">All device policies set by OwnDroid will be cleared</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_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>
|
||||||
|
|||||||
Reference in New Issue
Block a user