mirror of
https://codeberg.org/timelimit/timelimit-android.git
synced 2025-10-06 03:50:23 +02:00
Add reporting if running Android Q or later
This commit is contained in:
parent
fe1e5962c5
commit
f08dae25b6
4 changed files with 46 additions and 2 deletions
|
@ -37,6 +37,7 @@ import io.timelimit.android.integration.platform.android.AndroidIntegrationApps
|
|||
import io.timelimit.android.livedata.*
|
||||
import io.timelimit.android.sync.actions.UpdateDeviceStatusAction
|
||||
import io.timelimit.android.sync.actions.apply.ApplyActionUtil
|
||||
import io.timelimit.android.util.AndroidVersion
|
||||
import io.timelimit.android.util.TimeTextUtil
|
||||
import io.timelimit.android.work.PeriodicSyncInBackgroundWorker
|
||||
import kotlinx.coroutines.delay
|
||||
|
@ -595,6 +596,7 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
|||
val notificationAccess = appLogic.platformIntegration.getNotificationAccessPermissionStatus()
|
||||
val overlayPermission = appLogic.platformIntegration.getOverlayPermissionStatus()
|
||||
val accessibilityService = appLogic.platformIntegration.isAccessibilityServiceEnabled()
|
||||
val qOrLater = AndroidVersion.qOrLater
|
||||
|
||||
var changes = UpdateDeviceStatusAction.empty
|
||||
|
||||
|
@ -632,6 +634,10 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
|||
)
|
||||
}
|
||||
|
||||
if (qOrLater && !deviceEntry.qOrLater) {
|
||||
changes = changes.copy(isQOrLaterNow = true)
|
||||
}
|
||||
|
||||
if (changes != UpdateDeviceStatusAction.empty) {
|
||||
ApplyActionUtil.applyAppLogicAction(
|
||||
action = changes,
|
||||
|
|
|
@ -658,7 +658,8 @@ data class UpdateDeviceStatusAction(
|
|||
val newOverlayPermission: RuntimePermissionStatus?,
|
||||
val newAccessibilityServiceEnabled: Boolean?,
|
||||
val newAppVersion: Int?,
|
||||
val didReboot: Boolean
|
||||
val didReboot: Boolean,
|
||||
val isQOrLaterNow: Boolean
|
||||
): AppLogicAction() {
|
||||
companion object {
|
||||
const val TYPE_VALUE = "UPDATE_DEVICE_STATUS"
|
||||
|
@ -669,6 +670,7 @@ data class UpdateDeviceStatusAction(
|
|||
private const val NEW_ACCESSIBILITY_SERVICE_ENABLED = "accessibilityServiceEnabled"
|
||||
private const val NEW_APP_VERSION = "appVersion"
|
||||
private const val DID_REBOOT = "didReboot"
|
||||
private const val IS_Q_OR_LATER_NOW = "isQOrLaterNow"
|
||||
|
||||
val empty = UpdateDeviceStatusAction(
|
||||
newProtectionLevel = null,
|
||||
|
@ -677,7 +679,34 @@ data class UpdateDeviceStatusAction(
|
|||
newOverlayPermission = null,
|
||||
newAccessibilityServiceEnabled = null,
|
||||
newAppVersion = null,
|
||||
didReboot = false
|
||||
didReboot = false,
|
||||
isQOrLaterNow = false
|
||||
)
|
||||
|
||||
fun parse(value: JSONObject) = UpdateDeviceStatusAction(
|
||||
newProtectionLevel = if (value.has(NEW_PROTECTION_LEVEL))
|
||||
ProtectionLevelUtil.parse(value.getString(NEW_PROTECTION_LEVEL))
|
||||
else
|
||||
null,
|
||||
newUsageStatsPermissionStatus = if (value.has(NEW_USAGE_STATS_PERMISSION_STATUS))
|
||||
RuntimePermissionStatusUtil.parse(value.getString(NEW_USAGE_STATS_PERMISSION_STATUS))
|
||||
else
|
||||
null,
|
||||
newNotificationAccessPermission = if (value.has(NEW_NOTIFICATION_ACCESS_PERMISSION))
|
||||
NewPermissionStatusUtil.parse(value.getString(NEW_NOTIFICATION_ACCESS_PERMISSION))
|
||||
else
|
||||
null,
|
||||
newOverlayPermission = if (value.has(NEW_OVERLAY_PERMISSION))
|
||||
RuntimePermissionStatusUtil.parse(value.getString(NEW_OVERLAY_PERMISSION))
|
||||
else
|
||||
null,
|
||||
newAccessibilityServiceEnabled = if (value.has(NEW_ACCESSIBILITY_SERVICE_ENABLED))
|
||||
value.getBoolean(NEW_ACCESSIBILITY_SERVICE_ENABLED)
|
||||
else
|
||||
null,
|
||||
newAppVersion = if (value.has(NEW_APP_VERSION)) value.getInt(NEW_APP_VERSION) else null,
|
||||
didReboot = if (value.has(DID_REBOOT)) value.getBoolean(DID_REBOOT) else false,
|
||||
isQOrLaterNow = if (value.has(IS_Q_OR_LATER_NOW)) value.getBoolean(IS_Q_OR_LATER_NOW) else false
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -730,6 +759,10 @@ data class UpdateDeviceStatusAction(
|
|||
writer.name(DID_REBOOT).value(true)
|
||||
}
|
||||
|
||||
if (isQOrLaterNow) {
|
||||
writer.name(IS_Q_OR_LATER_NOW).value(true)
|
||||
}
|
||||
|
||||
writer.endObject()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ object ActionParser {
|
|||
TriedDisablingDeviceAdminAction.TYPE_VALUE -> TriedDisablingDeviceAdminAction
|
||||
SignOutAtDeviceAction.TYPE_VALUE -> SignOutAtDeviceAction
|
||||
UpdateAppActivitiesAction.TYPE_VALUE -> UpdateAppActivitiesAction.parse(action)
|
||||
UpdateDeviceStatusAction.TYPE_VALUE -> UpdateDeviceStatusAction.parse(action)
|
||||
else -> throw IllegalStateException()
|
||||
}
|
||||
|
||||
|
|
|
@ -206,6 +206,10 @@ object LocalDatabaseAppLogicActionDispatcher {
|
|||
)
|
||||
}
|
||||
|
||||
if (action.isQOrLaterNow && !device.qOrLater) {
|
||||
device = device.copy(qOrLater = true)
|
||||
}
|
||||
|
||||
database.device().updateDeviceEntry(device)
|
||||
|
||||
if (device.hasActiveManipulationWarning) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue