Merge pull request 'fix: use Activity Result API instead of deprecated methods' (#23) from fix/minor-android-issues into main
All checks were successful
CI / build (push) Successful in 1m22s
All checks were successful
CI / build (push) Successful in 1m22s
This commit is contained in:
commit
91739002ef
1 changed files with 24 additions and 32 deletions
|
|
@ -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<android.view.View>(R.id.settingsContainer)
|
||||
|
||||
settingsContainer.setOnClickListener {
|
||||
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS)
|
||||
settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
|
||||
}
|
||||
findViewById<ImageButton>(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<out String>, 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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue