X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacycell%2Factivities%2FSettingsActivity.kt;h=c9fe9300f9cf50a89a7f8d69dce47b732a7f0502;hb=HEAD;hp=279d836cfd82d7c3fa5fa92b18e24fc643225f5d;hpb=031b4a8ea78fdbb776a1c5991f246b4f2a3e7ed1;p=PrivacyCell.git diff --git a/app/src/main/java/com/stoutner/privacycell/activities/SettingsActivity.kt b/app/src/main/java/com/stoutner/privacycell/activities/SettingsActivity.kt index 279d836..c9fe930 100644 --- a/app/src/main/java/com/stoutner/privacycell/activities/SettingsActivity.kt +++ b/app/src/main/java/com/stoutner/privacycell/activities/SettingsActivity.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2021 Soren Stoutner . + * Copyright 2021-2022 Soren Stoutner . * * This file is part of Privacy Cell . * @@ -19,17 +19,26 @@ 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) @@ -59,15 +68,35 @@ class SettingsActivity : AppCompatActivity() { // 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, 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 +}