From f8cae8ed4cbfe2cdcdfee65d89f33fe0f12efc00 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Thu, 14 Dec 2023 12:21:06 -0800 Subject: [PATCH] fix: refactor WalletActivity permission launcher to avoid InvalidStateException --- .../src/de/schildbach/wallet/ui/main/WalletActivity.java | 3 +++ .../src/de/schildbach/wallet/ui/main/WalletActivityExt.kt | 7 +------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/wallet/src/de/schildbach/wallet/ui/main/WalletActivity.java b/wallet/src/de/schildbach/wallet/ui/main/WalletActivity.java index 3dece8fd6a..e9589e8fb5 100644 --- a/wallet/src/de/schildbach/wallet/ui/main/WalletActivity.java +++ b/wallet/src/de/schildbach/wallet/ui/main/WalletActivity.java @@ -25,6 +25,8 @@ import android.os.Bundle; import android.os.Handler; import android.os.PowerManager; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.core.app.ActivityCompat; import androidx.lifecycle.ViewModelProvider; @@ -76,6 +78,7 @@ public static Intent createIntent(Context context) { private BaseAlertDialogBuilder baseAlertDialogBuilder; private MainViewModel viewModel; + ActivityResultLauncher requestPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), result -> WalletActivityExt.INSTANCE.requestDisableBatteryOptimisation(WalletActivity.this)); @Override protected void onCreate(final Bundle savedInstanceState) { diff --git a/wallet/src/de/schildbach/wallet/ui/main/WalletActivityExt.kt b/wallet/src/de/schildbach/wallet/ui/main/WalletActivityExt.kt index 4063c389d6..63267827eb 100644 --- a/wallet/src/de/schildbach/wallet/ui/main/WalletActivityExt.kt +++ b/wallet/src/de/schildbach/wallet/ui/main/WalletActivityExt.kt @@ -203,11 +203,6 @@ object WalletActivityExt { } } - private val WalletActivity.requestPermissionLauncher: ActivityResultLauncher - get() = registerForActivityResult(ActivityResultContracts.RequestPermission()) { - requestDisableBatteryOptimisation() - } - /** * Android 13 - Show system dialog to get notification permission from user, if not granted * ask again with each app upgrade if not granted. This logic is handled by @@ -238,7 +233,7 @@ object WalletActivityExt { configuration.showNotificationsExplainer = false } - private fun WalletActivity.requestDisableBatteryOptimisation() { + fun WalletActivity.requestDisableBatteryOptimisation() { val powerManager: PowerManager = getSystemService(PowerManager::class.java) if (ContextCompat.checkSelfPermission( walletApplication,