mirror of
https://github.com/home-assistant/android
synced 2024-10-15 20:43:06 +00:00
Update deprecated onBackPressed, support predictive back gesture (#2959)
- Update onBackPressed functions which have been deprecated to use the new OnBackPressedDispatcher and OnBackPressedCallback - Indicate support for the predictive back gesture
This commit is contained in:
parent
51f9a3fe68
commit
47e8957a92
|
@ -52,9 +52,8 @@ class SettingsWearMainView : AppCompatActivity() {
|
||||||
LoadSettingsHomeView(
|
LoadSettingsHomeView(
|
||||||
settingsWearViewModel,
|
settingsWearViewModel,
|
||||||
currentNodes.firstOrNull()?.displayName ?: "unknown",
|
currentNodes.firstOrNull()?.displayName ?: "unknown",
|
||||||
this::loginWearOs,
|
this::loginWearOs
|
||||||
this::onBackPressed
|
) { onBackPressedDispatcher.onBackPressed() }
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (registerUrl != null) {
|
if (registerUrl != null) {
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.HomeAssistant"
|
android:theme="@style/Theme.HomeAssistant"
|
||||||
android:networkSecurityConfig="@xml/network_security_config"
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
|
android:enableOnBackInvokedCallback="true"
|
||||||
tools:ignore="GoogleAppIndexingWarning">
|
tools:ignore="GoogleAppIndexingWarning">
|
||||||
|
|
||||||
<!-- Start things like SensorWorker on device boot -->
|
<!-- Start things like SensorWorker on device boot -->
|
||||||
|
|
|
@ -3,6 +3,7 @@ package io.homeassistant.companion.android.onboarding
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
|
@ -68,13 +69,15 @@ class OnboardingActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onBackPressed() {
|
val onBackPressed = object : OnBackPressedCallback(supportFragmentManager.backStackEntryCount > 0) {
|
||||||
if (supportFragmentManager.backStackEntryCount > 0) {
|
override fun handleOnBackPressed() {
|
||||||
supportFragmentManager.popBackStack()
|
supportFragmentManager.popBackStack()
|
||||||
} else {
|
}
|
||||||
super.onBackPressed()
|
}
|
||||||
|
onBackPressedDispatcher.addCallback(this, onBackPressed)
|
||||||
|
supportFragmentManager.addOnBackStackChangedListener {
|
||||||
|
onBackPressed.isEnabled = supportFragmentManager.backStackEntryCount > 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ class SettingsActivity : BaseActivity() {
|
||||||
if (supportFragmentManager.backStackEntryCount > 0) {
|
if (supportFragmentManager.backStackEntryCount > 0) {
|
||||||
supportFragmentManager.popBackStack()
|
supportFragmentManager.popBackStack()
|
||||||
} else {
|
} else {
|
||||||
onBackPressed()
|
onBackPressedDispatcher.onBackPressed()
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ import android.webkit.WebView
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
|
@ -247,6 +248,14 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
||||||
decor = window.decorView as FrameLayout
|
decor = window.decorView as FrameLayout
|
||||||
|
|
||||||
webView = binding.webview
|
webView = binding.webview
|
||||||
|
|
||||||
|
val onBackPressed = object : OnBackPressedCallback(webView.canGoBack()) {
|
||||||
|
override fun handleOnBackPressed() {
|
||||||
|
if (webView.canGoBack()) webView.goBack()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onBackPressedDispatcher.addCallback(this, onBackPressed)
|
||||||
|
|
||||||
webView.apply {
|
webView.apply {
|
||||||
// TODO This quick bar workaround only works on Home Assistant core versions <2022.7
|
// TODO This quick bar workaround only works on Home Assistant core versions <2022.7
|
||||||
// If not 'fixed' or officially supported: should be removed in Android 2023.1 (GitHub: #2690)
|
// If not 'fixed' or officially supported: should be removed in Android 2023.1 (GitHub: #2690)
|
||||||
|
@ -406,6 +415,15 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun doUpdateVisitedHistory(
|
||||||
|
view: WebView?,
|
||||||
|
url: String?,
|
||||||
|
isReload: Boolean
|
||||||
|
) {
|
||||||
|
super.doUpdateVisitedHistory(view, url, isReload)
|
||||||
|
onBackPressed.isEnabled = canGoBack()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setDownloadListener { url, _, contentDisposition, mimetype, _ ->
|
setDownloadListener { url, _, contentDisposition, mimetype, _ ->
|
||||||
|
@ -1009,14 +1027,6 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
|
||||||
if (webView.canGoBack()) {
|
|
||||||
webView.goBack()
|
|
||||||
} else {
|
|
||||||
super.onBackPressed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun loadUrl(url: String) {
|
override fun loadUrl(url: String) {
|
||||||
loadedUrl = url
|
loadedUrl = url
|
||||||
webView.loadUrl(url)
|
webView.loadUrl(url)
|
||||||
|
|
Loading…
Reference in a new issue