Restore listener after clearing app data

This commit is contained in:
ajp_anton
2026-07-27 20:43:00 +00:00
parent 976ca9596e
commit 13a6c9c02e
@@ -4,14 +4,32 @@ import android.app.Application
import android.content.pm.PackageManager
import se.ajpanton.notificationlog.data.EncryptedNotificationLogStore
import se.ajpanton.notificationlog.settings.AppFilterSettingsStore
import se.ajpanton.notificationlog.settings.LoggingRuleStore
import se.ajpanton.notificationlog.settings.LoggingType
import se.ajpanton.notificationlog.settings.NotificationListenerComponentController
import se.ajpanton.notificationlog.settings.PerAppEventSettingsStore
class NotificationLogApplication : Application() {
override fun onCreate() {
super.onCreate()
synchronizeListenerComponent()
Thread(::removeStaleAppStorage, "notification-log-storage-cleanup").start()
}
/**
* Clearing app data resets rule preferences but deliberately does not reset
* PackageManager's enabled/disabled state for the listener component.
* Reconcile it before the UI starts so fresh default rules can bind again.
*/
private fun synchronizeListenerComponent() {
val rules = LoggingRuleStore(this)
NotificationListenerComponentController.update(
this,
LoggingType.entries.map(rules::ruleFor),
PerAppEventSettingsStore(this).hasEnabledEventOverride(),
)
}
private fun removeStaleAppStorage() {
val installedPackages = packageManager.getInstalledApplications(
PackageManager.ApplicationInfoFlags.of(0),