mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 19:15:58 +00:00
Update README
Use Compose AlertDialog instead android.app.AlertDialog Set default affiliation id after activation The 'dev' branch will be deleted, use 'master' instead
This commit is contained in:
@@ -14,6 +14,7 @@ import com.bintianqi.owndroid.dpm.handleNetworkLogs
|
||||
import com.bintianqi.owndroid.dpm.isDeviceOwner
|
||||
import com.bintianqi.owndroid.dpm.isProfileOwner
|
||||
import com.bintianqi.owndroid.dpm.processSecurityLogs
|
||||
import com.bintianqi.owndroid.dpm.setDefaultAffiliationID
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -34,6 +35,7 @@ class Receiver : DeviceAdminReceiver() {
|
||||
override fun onEnabled(context: Context, intent: Intent) {
|
||||
super.onEnabled(context, intent)
|
||||
if(context.isProfileOwner || context.isDeviceOwner){
|
||||
setDefaultAffiliationID(context)
|
||||
Toast.makeText(context, context.getString(R.string.onEnabled), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
@@ -41,6 +43,7 @@ class Receiver : DeviceAdminReceiver() {
|
||||
override fun onDisabled(context: Context, intent: Intent) {
|
||||
super.onDisabled(context, intent)
|
||||
Toast.makeText(context, R.string.onDisabled, Toast.LENGTH_SHORT).show()
|
||||
SharedPrefs(context).isDefaultAffiliationIdSet = false
|
||||
}
|
||||
|
||||
override fun onProfileProvisioningComplete(context: Context, intent: Intent) {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.app.PendingIntent
|
||||
import android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT
|
||||
import android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED
|
||||
@@ -91,9 +90,9 @@ import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.showOperationResultToast
|
||||
import com.bintianqi.owndroid.ui.Animations
|
||||
import com.bintianqi.owndroid.ui.FunctionItem
|
||||
import com.bintianqi.owndroid.ui.Notes
|
||||
import com.bintianqi.owndroid.ui.ListItem
|
||||
import com.bintianqi.owndroid.ui.NavIcon
|
||||
import com.bintianqi.owndroid.ui.Notes
|
||||
import com.bintianqi.owndroid.ui.RadioButtonItem
|
||||
import com.bintianqi.owndroid.ui.SwitchItem
|
||||
import kotlinx.serialization.Serializable
|
||||
@@ -901,6 +900,7 @@ private fun KeepUninstalledPackagesScreen(pkgName: String) {
|
||||
@Composable
|
||||
private fun UninstallPackageScreen(pkgName: String) {
|
||||
val context = LocalContext.current
|
||||
var errorMessage by remember { mutableStateOf<String?>(null) }
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())) {
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.uninstall_app), style = typography.headlineLarge)
|
||||
@@ -919,11 +919,7 @@ private fun UninstallPackageScreen(pkgName: String) {
|
||||
if(statusExtra == PackageInstaller.STATUS_SUCCESS) {
|
||||
context.showOperationResultToast(true)
|
||||
} else {
|
||||
AlertDialog.Builder(context)
|
||||
.setTitle(R.string.failure)
|
||||
.setMessage(parsePackageInstallerMessage(context, intent))
|
||||
.setPositiveButton(R.string.confirm) { dialog, _ -> dialog.dismiss() }
|
||||
.show()
|
||||
errorMessage = parsePackageInstallerMessage(context, intent)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -960,5 +956,13 @@ private fun UninstallPackageScreen(pkgName: String) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(errorMessage != null) AlertDialog(
|
||||
title = { Text(stringResource(R.string.failure)) },
|
||||
text = { Text(errorMessage!!) },
|
||||
confirmButton = {
|
||||
TextButton({ errorMessage = null }) { Text(stringResource(R.string.confirm)) }
|
||||
},
|
||||
onDismissRequest = { errorMessage = null }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.AlertDialog
|
||||
import android.app.admin.DevicePolicyManager.PRIVATE_DNS_MODE_OFF
|
||||
import android.app.admin.DevicePolicyManager.PRIVATE_DNS_MODE_OPPORTUNISTIC
|
||||
import android.app.admin.DevicePolicyManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME
|
||||
@@ -133,14 +132,15 @@ import com.bintianqi.owndroid.humanReadableDate
|
||||
import com.bintianqi.owndroid.humanReadableDateTime
|
||||
import com.bintianqi.owndroid.showOperationResultToast
|
||||
import com.bintianqi.owndroid.ui.CheckBoxItem
|
||||
import com.bintianqi.owndroid.ui.ErrorDialog
|
||||
import com.bintianqi.owndroid.ui.ExpandExposedTextFieldIcon
|
||||
import com.bintianqi.owndroid.ui.FullWidthRadioButtonItem
|
||||
import com.bintianqi.owndroid.ui.FunctionItem
|
||||
import com.bintianqi.owndroid.ui.Notes
|
||||
import com.bintianqi.owndroid.ui.ListItem
|
||||
import com.bintianqi.owndroid.ui.MyScaffold
|
||||
import com.bintianqi.owndroid.ui.MySmallTitleScaffold
|
||||
import com.bintianqi.owndroid.ui.NavIcon
|
||||
import com.bintianqi.owndroid.ui.Notes
|
||||
import com.bintianqi.owndroid.ui.RadioButtonItem
|
||||
import com.bintianqi.owndroid.ui.SwitchItem
|
||||
import com.bintianqi.owndroid.writeClipBoard
|
||||
@@ -507,6 +507,7 @@ private fun AddNetworkScreen(wifiConfig: WifiConfiguration? = null, onNavigateUp
|
||||
ssid = wifiConfig.SSID.removeSurrounding("\"")
|
||||
}
|
||||
}
|
||||
var errorMessage by remember { mutableStateOf<String?>(null) }
|
||||
Column(
|
||||
modifier = (if(wifiConfig == null) Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(bottom = 60.dp) else Modifier)
|
||||
.padding(start = 8.dp, end = 8.dp, top = 12.dp)
|
||||
@@ -721,11 +722,7 @@ private fun AddNetworkScreen(wifiConfig: WifiConfiguration? = null, onNavigateUp
|
||||
resultDialog = true
|
||||
} catch(e: Exception) {
|
||||
e.printStackTrace()
|
||||
AlertDialog.Builder(context)
|
||||
.setTitle(R.string.error)
|
||||
.setPositiveButton(R.string.confirm) { dialog, _ -> dialog.cancel() }
|
||||
.setMessage(e.message ?: "")
|
||||
.show()
|
||||
errorMessage = e.message
|
||||
}
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth().padding(vertical = 4.dp)
|
||||
@@ -755,6 +752,7 @@ private fun AddNetworkScreen(wifiConfig: WifiConfiguration? = null, onNavigateUp
|
||||
onDismissRequest = { resultDialog = false }
|
||||
)
|
||||
}
|
||||
ErrorDialog(errorMessage) { errorMessage = null }
|
||||
}
|
||||
|
||||
@Serializable object WifiSecurityLevel
|
||||
@@ -914,6 +912,7 @@ fun NetworkStatsScreen(onNavigateUp: () -> Unit, onNavigateToViewer: (NetworkSta
|
||||
val endTimeTextFieldInteractionSource = remember { MutableInteractionSource() }
|
||||
if(startTimeTextFieldInteractionSource.collectIsPressedAsState().value) activeTextField = NetworkStatsActiveTextField.StartTime
|
||||
if(endTimeTextFieldInteractionSource.collectIsPressedAsState().value) activeTextField = NetworkStatsActiveTextField.EndTime
|
||||
var errorMessage by remember { mutableStateOf<String?>(null) }
|
||||
MyScaffold(R.string.network_stats, 8.dp, onNavigateUp) {
|
||||
ExposedDropdownMenuBox(
|
||||
activeTextField == NetworkStatsActiveTextField.Type,
|
||||
@@ -1202,14 +1201,10 @@ fun NetworkStatsScreen(onNavigateUp: () -> Unit, onNavigateToViewer: (NetworkSta
|
||||
e.printStackTrace()
|
||||
withContext(Dispatchers.Main) {
|
||||
querying = false
|
||||
AlertDialog.Builder(context)
|
||||
.setTitle(R.string.error)
|
||||
.setMessage(e.message ?: "")
|
||||
.setPositiveButton(R.string.confirm) { dialog, _ -> dialog.dismiss() }
|
||||
.show()
|
||||
errorMessage = e.message
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
}.filterNot { it == null }
|
||||
if(buckets.isEmpty()) {
|
||||
withContext(Dispatchers.Main) {
|
||||
querying = false
|
||||
@@ -1263,6 +1258,7 @@ fun NetworkStatsScreen(onNavigateUp: () -> Unit, onNavigateToViewer: (NetworkSta
|
||||
}
|
||||
}
|
||||
}
|
||||
ErrorDialog(errorMessage) { errorMessage = null }
|
||||
}
|
||||
|
||||
@Serializable
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.ActivityOptions
|
||||
import android.app.AlertDialog
|
||||
import android.app.admin.DevicePolicyManager
|
||||
import android.app.admin.DevicePolicyManager.FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY
|
||||
import android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback
|
||||
@@ -126,6 +125,7 @@ import com.bintianqi.owndroid.humanReadableDate
|
||||
import com.bintianqi.owndroid.parseDate
|
||||
import com.bintianqi.owndroid.showOperationResultToast
|
||||
import com.bintianqi.owndroid.ui.CheckBoxItem
|
||||
import com.bintianqi.owndroid.ui.ErrorDialog
|
||||
import com.bintianqi.owndroid.ui.FullWidthCheckBoxItem
|
||||
import com.bintianqi.owndroid.ui.FullWidthRadioButtonItem
|
||||
import com.bintianqi.owndroid.ui.FunctionItem
|
||||
@@ -286,7 +286,7 @@ fun SystemOptionsScreen(onNavigateUp: () -> Unit) {
|
||||
}
|
||||
}
|
||||
if(deviceOwner || profileOwner) {
|
||||
SwitchItem(R.string.master_mute, icon = R.drawable.volume_up_fill0,
|
||||
SwitchItem(R.string.master_mute, icon = R.drawable.volume_off_fill0,
|
||||
getState = { dpm.isMasterVolumeMuted(receiver) }, onCheckedChange = { dpm.setMasterVolumeMuted(receiver,it) }
|
||||
)
|
||||
}
|
||||
@@ -1197,6 +1197,7 @@ private fun ColumnScope.LockTaskFeatures() {
|
||||
val receiver = context.getReceiver()
|
||||
var flags by remember { mutableIntStateOf(0) }
|
||||
var custom by rememberSaveable { mutableStateOf(false) }
|
||||
var errorMessage by remember { mutableStateOf<String?>(null) }
|
||||
fun refresh() {
|
||||
flags = dpm.getLockTaskFeatures(receiver)
|
||||
custom = flags != 0
|
||||
@@ -1230,17 +1231,14 @@ private fun ColumnScope.LockTaskFeatures() {
|
||||
dpm.setLockTaskFeatures(receiver, flags)
|
||||
context.showOperationResultToast(true)
|
||||
} catch (e: IllegalArgumentException) {
|
||||
AlertDialog.Builder(context)
|
||||
.setTitle(R.string.error)
|
||||
.setMessage(e.message)
|
||||
.setPositiveButton(R.string.confirm) { dialog, _ -> dialog.dismiss() }
|
||||
.show()
|
||||
errorMessage = e.message
|
||||
}
|
||||
refresh()
|
||||
}
|
||||
) {
|
||||
Text(stringResource(R.string.apply))
|
||||
}
|
||||
ErrorDialog(errorMessage) { errorMessage = null }
|
||||
}
|
||||
|
||||
data class CaCertInfo(
|
||||
|
||||
@@ -357,3 +357,15 @@ fun ExpandExposedTextFieldIcon(active: Boolean) {
|
||||
modifier = Modifier.rotate(degrees)
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ErrorDialog(message: String?, onDismiss: () -> Unit) {
|
||||
if(!message.isNullOrEmpty()) AlertDialog(
|
||||
title = { Text(stringResource(R.string.error)) },
|
||||
text = { Text(message) },
|
||||
confirmButton = {
|
||||
TextButton(onDismiss) { Text(stringResource(R.string.confirm)) }
|
||||
},
|
||||
onDismissRequest = onDismiss
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user