From b66a40ef55d51085259bb030b56b46be5e8c825c Mon Sep 17 00:00:00 2001 From: septs Date: Thu, 6 Mar 2025 23:36:38 +0800 Subject: [PATCH] chore: improve stk menu handling --- .../ui/UnprivilegedEuiccManagementFragment.kt | 34 ++++++++++++------- .../im/angry/openeuicc/util/SIMToolkit.kt | 1 - 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/app-unpriv/src/main/java/im/angry/openeuicc/ui/UnprivilegedEuiccManagementFragment.kt b/app-unpriv/src/main/java/im/angry/openeuicc/ui/UnprivilegedEuiccManagementFragment.kt index 617cbec..6db4960 100644 --- a/app-unpriv/src/main/java/im/angry/openeuicc/ui/UnprivilegedEuiccManagementFragment.kt +++ b/app-unpriv/src/main/java/im/angry/openeuicc/ui/UnprivilegedEuiccManagementFragment.kt @@ -4,6 +4,7 @@ import android.content.pm.PackageManager import android.provider.Settings import android.view.Menu import android.view.MenuInflater +import android.view.MenuItem import android.widget.Toast import im.angry.easyeuicc.R import im.angry.openeuicc.util.SIMToolkit @@ -26,22 +27,29 @@ class UnprivilegedEuiccManagementFragment : EuiccManagementFragment() { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { super.onCreateOptionsMenu(menu, inflater) inflater.inflate(R.menu.fragment_sim_toolkit, menu) + } + + override fun onPrepareOptionsMenu(menu: Menu) { + super.onPrepareOptionsMenu(menu) menu.findItem(R.id.open_sim_toolkit).apply { - val slot = stk[slotId] ?: return@apply - isVisible = slot.intent != null - setOnMenuItemClickListener { - val intent = slot.intent ?: return@setOnMenuItemClickListener false - if (intent.action == Settings.ACTION_APPLICATION_DETAILS_SETTINGS) { - val packageName = intent.data!!.schemeSpecificPart - val label = requireContext().packageManager.getApplicationLabel(packageName) - val message = requireContext().getString(R.string.toast_prompt_to_enable_sim_toolkit, label) - Toast.makeText(context, message, Toast.LENGTH_LONG).show() - } - startActivity(intent) - true - } + intent = stk[slotId]?.intent + isVisible = intent != null } } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (item.itemId == R.id.open_sim_toolkit) { + val intent = item.intent ?: return false + if (intent.action == Settings.ACTION_APPLICATION_DETAILS_SETTINGS) { + val packageName = intent.data!!.schemeSpecificPart + val label = requireContext().packageManager.getApplicationLabel(packageName) + val message = getString(R.string.toast_prompt_to_enable_sim_toolkit, label) + Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show() + } + return super.onOptionsItemSelected(item) + } + return super.onOptionsItemSelected(item) + } } private fun PackageManager.getApplicationLabel(packageName: String): CharSequence = diff --git a/app-unpriv/src/main/java/im/angry/openeuicc/util/SIMToolkit.kt b/app-unpriv/src/main/java/im/angry/openeuicc/util/SIMToolkit.kt index 99824ff..c41fc1e 100644 --- a/app-unpriv/src/main/java/im/angry/openeuicc/util/SIMToolkit.kt +++ b/app-unpriv/src/main/java/im/angry/openeuicc/util/SIMToolkit.kt @@ -7,7 +7,6 @@ import android.content.pm.ActivityInfo import android.content.pm.PackageManager import android.net.Uri import android.provider.Settings -import android.widget.Toast import androidx.annotation.ArrayRes import im.angry.easyeuicc.R import im.angry.openeuicc.core.EuiccChannelManager