Fix problems with the realtime notifications. https://redmine.stoutner.com/issues/764
[PrivacyCell.git] / app / src / main / java / com / stoutner / privacycell / workers / RegisterRealtimeListener.kt
index eaa8a5512d45f37d9ce80d233c3fa606acfeb146..b2cd8346a3ea8f0cba424c0ec11f2e17f9b9d1ab 100644 (file)
@@ -35,21 +35,18 @@ import com.stoutner.privacycell.R
 import com.stoutner.privacycell.services.RealtimeMonitoringService
 
 class RegisterRealtimeListener (appContext: Context, workerParams: WorkerParameters) : Worker(appContext, workerParams) {
-    // Store the application context.
-    private val context = appContext
-
     override fun doWork(): Result {
         // Get a handle for the shared preferences.
-        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
+        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext)
 
         // Get the realtime monitoring preference.  Sometimes the shared preferences can't return a value in time, because Android sucks.
         // So, the default value is set to true, which is the safest value if the shared preferences can't be queried.
-        val realtimeMonitoring = sharedPreferences.getBoolean(context.getString(R.string.realtime_monitoring_key), true)
+        val realtimeMonitoring = sharedPreferences.getBoolean(applicationContext.getString(R.string.realtime_monitoring_key), true)
 
         // Perform the functions according to the realtime monitoring status.
         if (realtimeMonitoring) {  // Realtime monitoring is enabled.
             // Get a handle for the activity manager.
-            val activityManager: ActivityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
+            val activityManager: ActivityManager = applicationContext.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
 
             // Get a list of the running service info.  The deprecated `getRunningServices()` now only returns services stared by Privacy Cell, but that is all we want to know anyway.
             val runningServiceInfoList: List<ActivityManager.RunningServiceInfo> = activityManager.getRunningServices(1)
@@ -57,7 +54,7 @@ class RegisterRealtimeListener (appContext: Context, workerParams: WorkerParamet
             // Check to see if the service is currently running.
             if (runningServiceInfoList.isEmpty()) {  // The service is currently stopped.
                 // Start the service.
-                context.startService(Intent(context, RealtimeMonitoringService::class.java))
+                applicationContext.startService(Intent(applicationContext, RealtimeMonitoringService::class.java))
             } else {  // The service is currently running.
                 // Create a service connection.
                 val serviceConnection = object : ServiceConnection {
@@ -72,7 +69,7 @@ class RegisterRealtimeListener (appContext: Context, workerParams: WorkerParamet
                         realtimeMonitoringService.registerTelephonyManagerListener()
 
                         // Unbind the service.
-                        context.unbindService(this)
+                        applicationContext.unbindService(this)
                     }
 
                     override fun onServiceDisconnected(componentName: ComponentName) {
@@ -81,11 +78,11 @@ class RegisterRealtimeListener (appContext: Context, workerParams: WorkerParamet
                 }
 
                 // Bind to the realtime monitoring service.
-                context.bindService(Intent(context, RealtimeMonitoringService::class.java), serviceConnection, 0)
+                applicationContext.bindService(Intent(applicationContext, RealtimeMonitoringService::class.java), serviceConnection, 0)
             }
         } else {  // Realtime monitoring is disabled.
             // Cancel the realtime listener work request.
-            WorkManager.getInstance(context).cancelUniqueWork(context.getString(R.string.register_listener_work_request))
+            WorkManager.getInstance(applicationContext).cancelUniqueWork(applicationContext.getString(R.string.register_listener_work_request))
         }
 
         // Return a success.