diff --git a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt index 3e48aa5b4c9..2b8d12d12d0 100644 --- a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt +++ b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt @@ -27,7 +27,8 @@ import android.os.PowerExemptionManager import androidx.compose.runtime.Composable import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settingslib.R -import com.android.settingslib.spa.livedata.observeAsCallback +import com.android.settingslib.spa.lifecycle.collectAsCallbackWithLifecycle +import com.android.settingslib.spaprivileged.model.app.AppOpsController import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.IPackageManagers import com.android.settingslib.spaprivileged.model.app.PackageManagers @@ -47,7 +48,7 @@ data class AlarmsAndRemindersAppRecord( override val app: ApplicationInfo, val isTrumped: Boolean, val isChangeable: Boolean, - var controller: AlarmsAndRemindersController, + var controller: AppOpsController, ) : AppRecord class AlarmsAndRemindersAppListModel( @@ -82,7 +83,7 @@ class AlarmsAndRemindersAppListModel( @Composable override fun isAllowed(record: AlarmsAndRemindersAppRecord): () -> Boolean? = when { record.isTrumped -> ({ true }) - else -> record.controller.isAllowed.observeAsCallback() + else -> record.controller.isAllowed.collectAsCallbackWithLifecycle() } override fun isChangeable(record: AlarmsAndRemindersAppRecord) = record.isChangeable @@ -112,7 +113,12 @@ class AlarmsAndRemindersAppListModel( app = app, isTrumped = isTrumped, isChangeable = hasRequestPermission && !isTrumped, - controller = AlarmsAndRemindersController(context, app), + controller = AppOpsController( + context = context, + app = app, + op = AppOpsManager.OP_SCHEDULE_EXACT_ALARM, + setModeByUid = true, + ), ) } diff --git a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersController.kt b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersController.kt deleted file mode 100644 index bd40f45e2e7..00000000000 --- a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersController.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.spa.app.specialaccess - -import android.app.AppOpsManager -import android.app.AppOpsManager.MODE_ALLOWED -import android.app.AppOpsManager.MODE_ERRORED -import android.content.Context -import android.content.pm.ApplicationInfo -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import com.android.settingslib.spaprivileged.framework.common.alarmManager -import com.android.settingslib.spaprivileged.framework.common.appOpsManager -import com.android.settingslib.spaprivileged.model.app.userId - -class AlarmsAndRemindersController( - context: Context, - private val app: ApplicationInfo, -) { - private val alarmManager = context.alarmManager - private val appOpsManager = context.appOpsManager - - val isAllowed: LiveData - get() = _allowed - - fun setAllowed(allowed: Boolean) { - val mode = if (allowed) MODE_ALLOWED else MODE_ERRORED - appOpsManager.setUidMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM, app.uid, mode) - _allowed.postValue(allowed) - } - - private val _allowed = object : MutableLiveData() { - override fun onActive() { - postValue(alarmManager.hasScheduleExactAlarm(app.packageName, app.userId)) - } - } -}