diff --git a/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt b/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt index 9d9579f6c5b73d1a073f7591aed6e0d36bad5462..59c3daf54896a460874640645a5190351538e356 100644 --- a/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt +++ b/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt @@ -127,6 +127,7 @@ import foundation.e.parentalcontrol.ui.view.SelectManageTypeApp import foundation.e.parentalcontrol.ui.view.selectedAge import foundation.e.parentalcontrol.ui.view.selectedAllowedScreenTime import foundation.e.parentalcontrol.ui.view.selectedTypeAppManagement +import foundation.e.parentalcontrol.utils.AlarmUtils import foundation.e.parentalcontrol.utils.Constants import foundation.e.parentalcontrol.utils.Constants.DELAY_CONFIRM_PASSWORD import foundation.e.parentalcontrol.utils.Constants.DELAY_DISABLE_FMD @@ -420,6 +421,7 @@ class MainActivity : ComponentActivity() { onSetAllowedApps() val stats = UsageStatsManager() stats.activeAlarm(mActivity, 0, false) + AlarmUtils.scheduleMidnightTrigger(context) if (!isAdminActive()) { setAdmin(true) @@ -669,6 +671,7 @@ class MainActivity : ComponentActivity() { PrefsUtils.clearAllExcept(Constants.PARENTAL_CONTROL_STATUS_LIST) if (isAdminActive()) { setAdmin(false) + AlarmUtils.cancelScheduleMidnightTrigger(mActivity) } coroutineScope.launch { delay(200) @@ -1423,6 +1426,7 @@ class MainActivity : ComponentActivity() { selectedAllowedScreenTime = 0 selectedTypeAppManagement = null setAdmin(false) + AlarmUtils.cancelScheduleMidnightTrigger(mActivity) onStartUp() }, onBackPressed = { onStartUp() } diff --git a/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt b/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt index da9d39f0186cb109cc713ee87a557374da6c54b7..52889cd9e025cef670d893149a0fc161714d9d2d 100644 --- a/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt +++ b/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt @@ -170,7 +170,7 @@ class UsageStatsManager { // case when PACO has been activated before today if (elementsForToday.isEmpty()) { if (statusList.isEmpty()) { - return false + return true } val lastStatus = statusList.last() if (!lastStatus.activated) { diff --git a/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt b/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt index a5767bad628e1408b832cfe5807f349af512fb31..7cebd058ec1055d8704d6c45b76a6414c41b81be 100644 --- a/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt +++ b/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt @@ -21,6 +21,7 @@ import android.app.AlarmManager import android.app.PendingIntent import android.content.Context import android.content.Intent +import foundation.e.parentalcontrol.AlarmReceiver import foundation.e.parentalcontrol.MidnightTriggerReceiver import java.util.Calendar @@ -51,4 +52,24 @@ object AlarmUtils { pendingIntent ) } + + fun cancelScheduleMidnightTrigger(context: Context) { + val alarmManager: AlarmManager = + context.getSystemService(Context.ALARM_SERVICE) as AlarmManager + + val pendingIntent = getScheduleMidnightTriggerPendingIntent(context) + alarmManager.cancel(pendingIntent) + } + + private fun getScheduleMidnightTriggerPendingIntent( + context: Context, + ): PendingIntent { + val intent = Intent(context, AlarmReceiver::class.java) + return PendingIntent.getBroadcast( + context, + 0, + intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT + ) + } }