mirror of
https://codeberg.org/timelimit/timelimit-android.git
synced 2025-10-06 11:59:57 +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.livedata.*
|
||||||
import io.timelimit.android.sync.actions.UpdateDeviceStatusAction
|
import io.timelimit.android.sync.actions.UpdateDeviceStatusAction
|
||||||
import io.timelimit.android.sync.actions.apply.ApplyActionUtil
|
import io.timelimit.android.sync.actions.apply.ApplyActionUtil
|
||||||
|
import io.timelimit.android.util.AndroidVersion
|
||||||
import io.timelimit.android.util.TimeTextUtil
|
import io.timelimit.android.util.TimeTextUtil
|
||||||
import io.timelimit.android.work.PeriodicSyncInBackgroundWorker
|
import io.timelimit.android.work.PeriodicSyncInBackgroundWorker
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
@ -595,6 +596,7 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
||||||
val notificationAccess = appLogic.platformIntegration.getNotificationAccessPermissionStatus()
|
val notificationAccess = appLogic.platformIntegration.getNotificationAccessPermissionStatus()
|
||||||
val overlayPermission = appLogic.platformIntegration.getOverlayPermissionStatus()
|
val overlayPermission = appLogic.platformIntegration.getOverlayPermissionStatus()
|
||||||
val accessibilityService = appLogic.platformIntegration.isAccessibilityServiceEnabled()
|
val accessibilityService = appLogic.platformIntegration.isAccessibilityServiceEnabled()
|
||||||
|
val qOrLater = AndroidVersion.qOrLater
|
||||||
|
|
||||||
var changes = UpdateDeviceStatusAction.empty
|
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) {
|
if (changes != UpdateDeviceStatusAction.empty) {
|
||||||
ApplyActionUtil.applyAppLogicAction(
|
ApplyActionUtil.applyAppLogicAction(
|
||||||
action = changes,
|
action = changes,
|
||||||
|
|
|
@ -658,7 +658,8 @@ data class UpdateDeviceStatusAction(
|
||||||
val newOverlayPermission: RuntimePermissionStatus?,
|
val newOverlayPermission: RuntimePermissionStatus?,
|
||||||
val newAccessibilityServiceEnabled: Boolean?,
|
val newAccessibilityServiceEnabled: Boolean?,
|
||||||
val newAppVersion: Int?,
|
val newAppVersion: Int?,
|
||||||
val didReboot: Boolean
|
val didReboot: Boolean,
|
||||||
|
val isQOrLaterNow: Boolean
|
||||||
): AppLogicAction() {
|
): AppLogicAction() {
|
||||||
companion object {
|
companion object {
|
||||||
const val TYPE_VALUE = "UPDATE_DEVICE_STATUS"
|
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_ACCESSIBILITY_SERVICE_ENABLED = "accessibilityServiceEnabled"
|
||||||
private const val NEW_APP_VERSION = "appVersion"
|
private const val NEW_APP_VERSION = "appVersion"
|
||||||
private const val DID_REBOOT = "didReboot"
|
private const val DID_REBOOT = "didReboot"
|
||||||
|
private const val IS_Q_OR_LATER_NOW = "isQOrLaterNow"
|
||||||
|
|
||||||
val empty = UpdateDeviceStatusAction(
|
val empty = UpdateDeviceStatusAction(
|
||||||
newProtectionLevel = null,
|
newProtectionLevel = null,
|
||||||
|
@ -677,7 +679,34 @@ data class UpdateDeviceStatusAction(
|
||||||
newOverlayPermission = null,
|
newOverlayPermission = null,
|
||||||
newAccessibilityServiceEnabled = null,
|
newAccessibilityServiceEnabled = null,
|
||||||
newAppVersion = 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)
|
writer.name(DID_REBOOT).value(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isQOrLaterNow) {
|
||||||
|
writer.name(IS_Q_OR_LATER_NOW).value(true)
|
||||||
|
}
|
||||||
|
|
||||||
writer.endObject()
|
writer.endObject()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ object ActionParser {
|
||||||
TriedDisablingDeviceAdminAction.TYPE_VALUE -> TriedDisablingDeviceAdminAction
|
TriedDisablingDeviceAdminAction.TYPE_VALUE -> TriedDisablingDeviceAdminAction
|
||||||
SignOutAtDeviceAction.TYPE_VALUE -> SignOutAtDeviceAction
|
SignOutAtDeviceAction.TYPE_VALUE -> SignOutAtDeviceAction
|
||||||
UpdateAppActivitiesAction.TYPE_VALUE -> UpdateAppActivitiesAction.parse(action)
|
UpdateAppActivitiesAction.TYPE_VALUE -> UpdateAppActivitiesAction.parse(action)
|
||||||
|
UpdateDeviceStatusAction.TYPE_VALUE -> UpdateDeviceStatusAction.parse(action)
|
||||||
else -> throw IllegalStateException()
|
else -> throw IllegalStateException()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -206,6 +206,10 @@ object LocalDatabaseAppLogicActionDispatcher {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (action.isQOrLaterNow && !device.qOrLater) {
|
||||||
|
device = device.copy(qOrLater = true)
|
||||||
|
}
|
||||||
|
|
||||||
database.device().updateDeviceEntry(device)
|
database.device().updateDeviceEntry(device)
|
||||||
|
|
||||||
if (device.hasActiveManipulationWarning) {
|
if (device.hasActiveManipulationWarning) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue