mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
fix setAlwaysOnVpnPackage
This commit is contained in:
@@ -158,6 +158,7 @@ fun ApplicationManage(navCtrl:NavHostController, pkgName: MutableState<String>,
|
|||||||
composable(route = "Home") {
|
composable(route = "Home") {
|
||||||
Home(localNavCtrl, pkgName.value, dialogStatus, clearAppDataDialog, defaultDialerAppDialog, enableSystemAppDialog)
|
Home(localNavCtrl, pkgName.value, dialogStatus, clearAppDataDialog, defaultDialerAppDialog, enableSystemAppDialog)
|
||||||
}
|
}
|
||||||
|
composable(route = "AlwaysOnVpn") { AlwaysOnVPNPackage(pkgName.value) }
|
||||||
composable(route = "UserControlDisabled") { UserCtrlDisabledPkg(pkgName.value) }
|
composable(route = "UserControlDisabled") { UserCtrlDisabledPkg(pkgName.value) }
|
||||||
composable(route = "PermissionManage") { PermissionManage(pkgName.value, navCtrl) }
|
composable(route = "PermissionManage") { PermissionManage(pkgName.value, navCtrl) }
|
||||||
composable(route = "CrossProfilePackage") { CrossProfilePkg(pkgName.value) }
|
composable(route = "CrossProfilePackage") { CrossProfilePkg(pkgName.value) }
|
||||||
@@ -255,26 +256,7 @@ private fun Home(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
if(VERSION.SDK_INT>=24 && (isDeviceOwner(dpm) || isProfileOwner(dpm))) {
|
if(VERSION.SDK_INT>=24 && (isDeviceOwner(dpm) || isProfileOwner(dpm))) {
|
||||||
val setAlwaysOnVpn: (Boolean)->Unit = {
|
SubPageItem(R.string.always_on_vpn, "", R.drawable.vpn_key_fill0) { navCtrl.navigate("AlwaysOnVpn") }
|
||||||
try {
|
|
||||||
dpm.setAlwaysOnVpnPackage(receiver, pkgName, it)
|
|
||||||
} catch(e: UnsupportedOperationException) {
|
|
||||||
Toast.makeText(context, R.string.unsupported, Toast.LENGTH_SHORT).show()
|
|
||||||
} catch(e: NameNotFoundException) {
|
|
||||||
Toast.makeText(context, R.string.not_installed, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SwitchItem(
|
|
||||||
title = R.string.always_on_vpn, desc = "", icon = R.drawable.vpn_key_fill0,
|
|
||||||
getState = { pkgName == dpm.getAlwaysOnVpnPackage(receiver) },
|
|
||||||
onCheckedChange = setAlwaysOnVpn,
|
|
||||||
onClickBlank = {
|
|
||||||
dialogGetStatus = { pkgName == dpm.getAlwaysOnVpnPackage(receiver) }
|
|
||||||
dialogConfirmButtonAction = { setAlwaysOnVpn(true) }
|
|
||||||
dialogDismissButtonAction = { setAlwaysOnVpn(false) }
|
|
||||||
dialogStatus.intValue = 4
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
if((VERSION.SDK_INT>=33&&isProfileOwner(dpm))||(VERSION.SDK_INT>=30&&isDeviceOwner(dpm))) {
|
if((VERSION.SDK_INT>=33&&isProfileOwner(dpm))||(VERSION.SDK_INT>=30&&isDeviceOwner(dpm))) {
|
||||||
SubPageItem(R.string.ucd, "", R.drawable.do_not_touch_fill0) { navCtrl.navigate("UserControlDisabled") }
|
SubPageItem(R.string.ucd, "", R.drawable.do_not_touch_fill0) { navCtrl.navigate("UserControlDisabled") }
|
||||||
@@ -318,6 +300,50 @@ private fun Home(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
@Composable
|
||||||
|
fun AlwaysOnVPNPackage(pkgName: String) {
|
||||||
|
val context = LocalContext.current
|
||||||
|
val dpm = context.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||||
|
val receiver = ComponentName(context,Receiver::class.java)
|
||||||
|
var lockdown by remember { mutableStateOf(false) }
|
||||||
|
var pkg by remember { mutableStateOf<String?>("") }
|
||||||
|
val refresh = { pkg = dpm.getAlwaysOnVpnPackage(receiver) }
|
||||||
|
LaunchedEffect(Unit) { refresh() }
|
||||||
|
val setAlwaysOnVpn: (String?, Boolean)->Unit = { vpnPkg: String?, lockdownEnabled: Boolean ->
|
||||||
|
try {
|
||||||
|
dpm.setAlwaysOnVpnPackage(receiver, vpnPkg, lockdownEnabled)
|
||||||
|
Toast.makeText(context, R.string.success, Toast.LENGTH_SHORT).show()
|
||||||
|
} catch(e: UnsupportedOperationException) {
|
||||||
|
Toast.makeText(context, R.string.unsupported, Toast.LENGTH_SHORT).show()
|
||||||
|
} catch(e: NameNotFoundException) {
|
||||||
|
Toast.makeText(context, R.string.not_installed, Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {
|
||||||
|
Spacer(Modifier.padding(vertical = 10.dp))
|
||||||
|
Text(text = stringResource(R.string.always_on_vpn), style = typography.headlineLarge, modifier = Modifier.padding(8.dp))
|
||||||
|
Spacer(Modifier.padding(vertical = 5.dp))
|
||||||
|
Text(text = stringResource(R.string.current_app_is) + pkg, modifier = Modifier.padding(8.dp))
|
||||||
|
SwitchItem(R.string.enable_lockdown, "", null, { lockdown }, { lockdown = it })
|
||||||
|
Spacer(Modifier.padding(vertical = 5.dp))
|
||||||
|
Button(
|
||||||
|
onClick = { setAlwaysOnVpn(pkgName, lockdown); refresh() },
|
||||||
|
modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp)
|
||||||
|
) {
|
||||||
|
Text(stringResource(R.string.apply))
|
||||||
|
}
|
||||||
|
Spacer(Modifier.padding(vertical = 5.dp))
|
||||||
|
Button(
|
||||||
|
onClick = { setAlwaysOnVpn(null, false); refresh() },
|
||||||
|
modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp)
|
||||||
|
) {
|
||||||
|
Text(stringResource(R.string.clear_current_config))
|
||||||
|
}
|
||||||
|
Spacer(Modifier.padding(vertical = 30.dp))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
@Composable
|
@Composable
|
||||||
private fun UserCtrlDisabledPkg(pkgName:String) {
|
private fun UserCtrlDisabledPkg(pkgName:String) {
|
||||||
|
|||||||
@@ -286,6 +286,9 @@
|
|||||||
<string name="hide">Gizle</string>
|
<string name="hide">Gizle</string>
|
||||||
<string name="isapphidden_desc">Mevcut olmayan uygulamalar gizlidir</string>
|
<string name="isapphidden_desc">Mevcut olmayan uygulamalar gizlidir</string>
|
||||||
<string name="always_on_vpn">Her zaman açık VPN</string>
|
<string name="always_on_vpn">Her zaman açık VPN</string>
|
||||||
|
<string name="enable_lockdown">Enable lockdown</string> <!--TODO-->
|
||||||
|
<string name="current_app_is">Current app: </string> <!--TODO-->
|
||||||
|
<string name="clear_current_config">Clear current config</string> <!--TODO-->
|
||||||
<string name="permission">İzin</string>
|
<string name="permission">İzin</string>
|
||||||
<string name="scope_is_work_profile">Kapsam: iş profili</string>
|
<string name="scope_is_work_profile">Kapsam: iş profili</string>
|
||||||
<string name="app_info">Uygulama bilgisi</string>
|
<string name="app_info">Uygulama bilgisi</string>
|
||||||
|
|||||||
@@ -281,6 +281,9 @@
|
|||||||
<string name="hide">隐藏</string>
|
<string name="hide">隐藏</string>
|
||||||
<string name="isapphidden_desc">如果隐藏,有可能是没安装</string>
|
<string name="isapphidden_desc">如果隐藏,有可能是没安装</string>
|
||||||
<string name="always_on_vpn">VPN保持打开</string>
|
<string name="always_on_vpn">VPN保持打开</string>
|
||||||
|
<string name="enable_lockdown">启用锁定</string>
|
||||||
|
<string name="current_app_is">当前应用:</string>
|
||||||
|
<string name="clear_current_config">清除当前配置</string>
|
||||||
<string name="permission">权限</string>
|
<string name="permission">权限</string>
|
||||||
<string name="scope_is_work_profile">作用域: 工作资料</string>
|
<string name="scope_is_work_profile">作用域: 工作资料</string>
|
||||||
<string name="app_info">应用详情</string>
|
<string name="app_info">应用详情</string>
|
||||||
|
|||||||
@@ -295,6 +295,9 @@
|
|||||||
<string name="hide">Hide</string>
|
<string name="hide">Hide</string>
|
||||||
<string name="isapphidden_desc">Non-existent apps is hidden</string>
|
<string name="isapphidden_desc">Non-existent apps is hidden</string>
|
||||||
<string name="always_on_vpn">Always-on VPN</string>
|
<string name="always_on_vpn">Always-on VPN</string>
|
||||||
|
<string name="enable_lockdown">Enable lockdown</string>
|
||||||
|
<string name="current_app_is">Current app: </string>
|
||||||
|
<string name="clear_current_config">Clear current config</string>
|
||||||
<string name="permission">Permission</string>
|
<string name="permission">Permission</string>
|
||||||
<string name="scope_is_work_profile">Scope: work profile</string>
|
<string name="scope_is_work_profile">Scope: work profile</string>
|
||||||
<string name="app_info">App info</string>
|
<string name="app_info">App info</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user