From ce1a53eee69287b597628c93e77892b687c3c17c Mon Sep 17 00:00:00 2001 From: eddy Date: Tue, 4 Aug 2026 18:34:26 +0200 Subject: [PATCH] fix: use Activity Result API instead of deprecated methods - Replace onActivityResult with registerForActivityResult - Replace onRequestPermissionsResult with permissionLauncher - Remove deprecated @Suppress annotations --- .../java/nl/eddydevink/sylda/MainActivity.kt | 56 ++++++++----------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt b/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt index 8f73a52..e18839c 100644 --- a/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt +++ b/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt @@ -2,7 +2,6 @@ package nl.eddydevink.sylda import android.content.Intent -import android.content.pm.PackageManager import android.graphics.Color import android.net.Uri import android.os.Bundle @@ -13,14 +12,13 @@ import android.widget.Button import android.widget.ImageButton import android.widget.TextView import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity -import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat class MainActivity : AppCompatActivity(), BleCallbacks { companion object { - private const val REQUEST_SETTINGS = 1 private const val POST_SETTINGS_RESCAN_MS = 500L private const val ON_RESUME_SCAN_DELAY_MS = 300L } @@ -34,6 +32,25 @@ class MainActivity : AppCompatActivity(), BleCallbacks { private var lastTheme: String? = null private var triedPermissions = false + private val settingsLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == SettingsActivity.RESULT_SCAN) { + triedPermissions = false + manager.disconnect() + manager.resetTriedAddresses() + manager.updateKeys() + handler.postDelayed({ manager.startScan() }, POST_SETTINGS_RESCAN_MS) + } + } + + private val permissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { grants -> + if (grants.values.all { it }) { + manager.startScan() + } else { + triedPermissions = false + onStatusChanged(BleStatus.PermissionsDenied) + } + } + override fun onStatusChanged(status: BleStatus) { when (status) { BleStatus.Connected -> { @@ -99,10 +116,10 @@ class MainActivity : AppCompatActivity(), BleCallbacks { val settingsContainer = findViewById(R.id.settingsContainer) settingsContainer.setOnClickListener { - startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS) + settingsLauncher.launch(Intent(this, SettingsActivity::class.java)) } findViewById(R.id.settingsButton).setOnClickListener { - startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS) + settingsLauncher.launch(Intent(this, SettingsActivity::class.java)) } setupRelayButton() setupRelay2Button() @@ -110,18 +127,6 @@ class MainActivity : AppCompatActivity(), BleCallbacks { relay2Button.isEnabled = true } - @Deprecated("Deprecated in Java") - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (requestCode == REQUEST_SETTINGS && resultCode == SettingsActivity.RESULT_SCAN) { - triedPermissions = false - manager.disconnect() - manager.resetTriedAddresses() - manager.updateKeys() - handler.postDelayed({ manager.startScan() }, POST_SETTINGS_RESCAN_MS) - } - } - override fun onResume() { super.onResume() val current = PrefsHelper.getPrefs(this).getString(PrefsHelper.PREF_THEME, "system") ?: "system" @@ -135,7 +140,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks { if (!manager.hasPermissions()) { if (!triedPermissions) { triedPermissions = true - ActivityCompat.requestPermissions(this, manager.getRequiredPermissions(), 1) + permissionLauncher.launch(manager.getRequiredPermissions()) } return } @@ -150,19 +155,6 @@ class MainActivity : AppCompatActivity(), BleCallbacks { manager.stopScan() } - @Deprecated("Deprecated in Java") - override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults) - if (requestCode == 1) { - if (grantResults.all { it == PackageManager.PERMISSION_GRANTED }) { - manager.startScan() - } else { - triedPermissions = false - onStatusChanged(BleStatus.PermissionsDenied) - } - } - } - private fun setupRelayButton() { relay1Button.setOnClickListener(null) loadButtonLabel(relay1Button, PrefsHelper.PREF_LABEL1, R.string.button_hold) @@ -230,7 +222,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks { if (isFinishing || isDestroyed || !lifecycle.currentState.isAtLeast(androidx.lifecycle.Lifecycle.State.RESUMED)) return@runOnUiThread if (espVersion.isNotEmpty() && espVersion != appVersion) { Toast.makeText(this, getString(R.string.ota_update_available), Toast.LENGTH_SHORT).show() - startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS) + settingsLauncher.launch(Intent(this, SettingsActivity::class.java)) } } }