UnprivilegedEuiccManagementFragment.kt 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package im.angry.openeuicc.ui
  2. import android.content.pm.PackageManager
  3. import android.provider.Settings
  4. import android.view.Menu
  5. import android.view.MenuInflater
  6. import android.view.MenuItem
  7. import android.widget.Toast
  8. import im.angry.easyeuicc.R
  9. import im.angry.openeuicc.util.SIMToolkit
  10. import im.angry.openeuicc.util.newInstanceEuicc
  11. import im.angry.openeuicc.util.slotId
  12. class UnprivilegedEuiccManagementFragment : EuiccManagementFragment() {
  13. companion object {
  14. const val TAG = "UnprivilegedEuiccManagementFragment"
  15. fun newInstance(slotId: Int, portId: Int): EuiccManagementFragment =
  16. newInstanceEuicc(UnprivilegedEuiccManagementFragment::class.java, slotId, portId)
  17. }
  18. private val stk by lazy {
  19. SIMToolkit(requireContext())
  20. }
  21. override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
  22. super.onCreateOptionsMenu(menu, inflater)
  23. inflater.inflate(R.menu.fragment_sim_toolkit, menu)
  24. }
  25. override fun onPrepareOptionsMenu(menu: Menu) {
  26. super.onPrepareOptionsMenu(menu)
  27. menu.findItem(R.id.open_sim_toolkit).apply {
  28. intent = stk[slotId]?.intent
  29. isVisible = intent != null
  30. }
  31. }
  32. override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
  33. R.id.open_sim_toolkit -> {
  34. SIMToolkit.getDisabledPackageName(item.intent)?.also { packageName ->
  35. val label = requireContext().packageManager.getApplicationLabel(packageName)
  36. val message = getString(R.string.toast_prompt_to_enable_sim_toolkit, label)
  37. Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show()
  38. }
  39. super.onOptionsItemSelected(item) // handling intent
  40. }
  41. else -> super.onOptionsItemSelected(item)
  42. }
  43. }
  44. private fun PackageManager.getApplicationLabel(packageName: String): CharSequence =
  45. getApplicationLabel(getApplicationInfo(packageName, 0))