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
|
package nl.eddydevink.sylda
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
|
@ -13,14 +12,13 @@ import android.widget.Button
|
||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.app.ActivityCompat
|
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity(), BleCallbacks {
|
class MainActivity : AppCompatActivity(), BleCallbacks {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val REQUEST_SETTINGS = 1
|
|
||||||
private const val POST_SETTINGS_RESCAN_MS = 500L
|
private const val POST_SETTINGS_RESCAN_MS = 500L
|
||||||
private const val ON_RESUME_SCAN_DELAY_MS = 300L
|
private const val ON_RESUME_SCAN_DELAY_MS = 300L
|
||||||
}
|
}
|
||||||
|
|
@ -34,6 +32,25 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
|
||||||
private var lastTheme: String? = null
|
private var lastTheme: String? = null
|
||||||
private var triedPermissions = false
|
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) {
|
override fun onStatusChanged(status: BleStatus) {
|
||||||
when (status) {
|
when (status) {
|
||||||
BleStatus.Connected -> {
|
BleStatus.Connected -> {
|
||||||
|
|
@ -99,10 +116,10 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
|
||||||
val settingsContainer = findViewById<android.view.View>(R.id.settingsContainer)
|
val settingsContainer = findViewById<android.view.View>(R.id.settingsContainer)
|
||||||
|
|
||||||
settingsContainer.setOnClickListener {
|
settingsContainer.setOnClickListener {
|
||||||
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS)
|
settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
|
||||||
}
|
}
|
||||||
findViewById<ImageButton>(R.id.settingsButton).setOnClickListener {
|
findViewById<ImageButton>(R.id.settingsButton).setOnClickListener {
|
||||||
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS)
|
settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
|
||||||
}
|
}
|
||||||
setupRelayButton()
|
setupRelayButton()
|
||||||
setupRelay2Button()
|
setupRelay2Button()
|
||||||
|
|
@ -110,18 +127,6 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
|
||||||
relay2Button.isEnabled = true
|
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() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
val current = PrefsHelper.getPrefs(this).getString(PrefsHelper.PREF_THEME, "system") ?: "system"
|
val current = PrefsHelper.getPrefs(this).getString(PrefsHelper.PREF_THEME, "system") ?: "system"
|
||||||
|
|
@ -135,7 +140,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
|
||||||
if (!manager.hasPermissions()) {
|
if (!manager.hasPermissions()) {
|
||||||
if (!triedPermissions) {
|
if (!triedPermissions) {
|
||||||
triedPermissions = true
|
triedPermissions = true
|
||||||
ActivityCompat.requestPermissions(this, manager.getRequiredPermissions(), 1)
|
permissionLauncher.launch(manager.getRequiredPermissions())
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -150,19 +155,6 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
|
||||||
manager.stopScan()
|
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() {
|
private fun setupRelayButton() {
|
||||||
relay1Button.setOnClickListener(null)
|
relay1Button.setOnClickListener(null)
|
||||||
loadButtonLabel(relay1Button, PrefsHelper.PREF_LABEL1, R.string.button_hold)
|
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 (isFinishing || isDestroyed || !lifecycle.currentState.isAtLeast(androidx.lifecycle.Lifecycle.State.RESUMED)) return@runOnUiThread
|
||||||
if (espVersion.isNotEmpty() && espVersion != appVersion) {
|
if (espVersion.isNotEmpty() && espVersion != appVersion) {
|
||||||
Toast.makeText(this, getString(R.string.ota_update_available), Toast.LENGTH_SHORT).show()
|
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