wekeyT9/app/src/main/java/net/mezimmah/wkt9/preferences/PreferencesFragment.kt
2023-08-27 16:20:58 +02:00

59 lines
2.1 KiB
Kotlin

package net.mezimmah.wkt9.preferences
import android.content.SharedPreferences
import android.os.Bundle
import android.Manifest
import android.os.Build
import android.util.Log
import androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
import net.mezimmah.wkt9.R
class PreferencesFragment: PreferenceFragmentCompat(),
SharedPreferences.OnSharedPreferenceChangeListener {
private val tag = "WKT9"
private val requestPermissionLauncher = registerForActivityResult(RequestMultiplePermissions()) { isGranted: Map<String, Boolean> ->
// If any permission got denied we programmatically disable the option
if (isGranted.containsValue(false)) {
val key = getString(R.string.preference_setting_speech_to_text_key)
findPreference<SwitchPreference>(key)?.isChecked = false
}
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
Log.d(tag, "Loading preferences")
setPreferencesFromResource(R.xml.preferences, rootKey)
}
override fun onResume() {
super.onResume()
preferenceScreen.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
}
override fun onPause() {
super.onPause()
preferenceScreen.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this)
}
override fun onSharedPreferenceChanged(p0: SharedPreferences?, key: String?) {
when (key) {
getString(R.string.preference_setting_speech_to_text_key) -> {
if (findPreference<SwitchPreference>(key)?.isChecked == true) {
val permissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
arrayOf(
Manifest.permission.RECORD_AUDIO,
Manifest.permission.POST_NOTIFICATIONS
)
} else arrayOf(Manifest.permission.RECORD_AUDIO)
requestPermissionLauncher.launch(permissions)
}
}
}
}
}