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..3ead325 100644 --- a/app/src/main/java/com/stoutner/privacycell/activities/SettingsActivity.kt +++ b/app/src/main/java/com/stoutner/privacycell/activities/SettingsActivity.kt @@ -1,35 +1,44 @@ -/* - * Copyright © 2021 Soren Stoutner . +/* SPDX-License-Identifier: GPL-3.0-or-later + * SPDX-FileCopyrightText: 2021-2022 Soren Stoutner * - * This file is part of Privacy Cell . + * This file is part of Privacy Cell . * - * Privacy Cell is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. * - * Privacy Cell is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * - * You should have received a copy of the GNU General Public License - * along with Privacy Cell. If not, see . + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . */ 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 +}