/*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2021-2022 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
*
package com.stoutner.privacycell.activities
+import android.Manifest
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.os.Build
import android.os.Bundle
-import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
+import androidx.core.app.ActivityCompat
import androidx.preference.PreferenceManager
import com.stoutner.privacycell.R
+import com.stoutner.privacycell.dialogs.NotificationPermissionDialog.NotificationPermissionDialogListener
import com.stoutner.privacycell.fragments.SettingsFragment
+import com.stoutner.privacycell.services.RealtimeMonitoringService
+
+class SettingsActivity : AppCompatActivity(), NotificationPermissionDialogListener {
+ // Declare the class variables.
+ private lateinit var settingsFragment: SettingsFragment
-class SettingsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// Run the default commands.
super.onCreate(savedInstanceState)
// Display the home arrow on the action bar.
actionBar.setDisplayHomeAsUpEnabled(true)
- // Load the preferences fragment.
- supportFragmentManager.beginTransaction().replace(R.id.preferences_framelayout, SettingsFragment()).commit()
+ // Instantiate the settings fragment.
+ settingsFragment = SettingsFragment()
+
+ // Load the settings fragment.
+ supportFragmentManager.beginTransaction().replace(R.id.preferences_framelayout, settingsFragment).commitNow()
+ }
+
+ override fun onCloseNotificationPermissionDialog() {
+ // Request the post notifications permission if the API >= 33.
+ if (Build.VERSION.SDK_INT >= 33) {
+ ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), PrivacyCellActivity.NOTIFICATION_PERMISSION_REQUEST_CODE)
+ }
}
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- // As there is only one option, go back.
- onBackPressed()
+ override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
+ // Run the default commands.
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+
+ // Only process the results if they exist (this method is triggered when a dialog is presented the first time for an app, but no grant results are included)
+ // and the result is for the notification permission.
+ if (grantResults.isNotEmpty() && (requestCode == PrivacyCellActivity.NOTIFICATION_PERMISSION_REQUEST_CODE)) {
+ // Check to see if the notification permission was granted. If the dialog was canceled the grant result will be empty.
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // The notification permission was granted.
+ // Start the realtime monitoring service.
+ startService(Intent(this, RealtimeMonitoringService::class.java))
- // Consume the event.
- return true
+ // Update the realtime monitoring preference summary.
+ settingsFragment.updateRealtimeMonitoringSummary()
+ }
+ }
}
-}
\ No newline at end of file
+}