Guest User

Untitled

a guest
Aug 15th, 2022
615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.82 KB | None | 0 0
  1. class InstallESimFragment : BaseBindingFragment<FragmentInstallEsimBinding>() {
  2.  
  3.     override var layoutId = R.layout.fragment_install_esim
  4.  
  5.     private val args: InstallESimFragmentArgs by navArgs()
  6.  
  7.     private val action = "download_subscription"
  8.  
  9.     private val code by lazy { args.code }
  10.  
  11.     @RequiresApi(Build.VERSION_CODES.P)
  12.     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
  13.         val euiccManger = requireContext().getSystemService(Context.EUICC_SERVICE)
  14.  
  15.         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P || euiccManger == null || !(euiccManger as EuiccManager).isEnabled) {
  16.             requireActivity().onBackPressed()
  17.         }
  18.  
  19.         binding.btnInstall.setOnClickListener {
  20.             requireContext().registerReceiver(receiver, IntentFilter(action))
  21.             val sub = DownloadableSubscription.forActivationCode(code)
  22.             val callbackIntent = PendingIntent.getBroadcast(requireContext(), 0, Intent(action), PendingIntent.FLAG_UPDATE_CURRENT)
  23.             (euiccManger as EuiccManager).downloadSubscription(sub, true, callbackIntent)
  24.         }
  25.     }
  26.  
  27.     override fun onDestroyView() {
  28.         super.onDestroyView()
  29.         requireContext().unregisterReceiver(receiver)
  30.     }
  31.  
  32.     private val receiver: BroadcastReceiver = object : BroadcastReceiver() {
  33.         @SuppressLint("InlinedApi")
  34.         @RequiresApi(Build.VERSION_CODES.P)
  35.         override fun onReceive(context: Context, intent: Intent?) {
  36.             val detailCode = intent?.getIntExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE, 0)
  37.             val operationCode = intent?.getIntExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE, 0)
  38.             val errorCode = intent?.getIntExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE, 0)
  39.             val smdxSubjectCode = intent?.getStringExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE)
  40.             val smdxReasonCode = intent?.getStringExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE)
  41.  
  42.             val euiccManger = context.getSystemService(Context.EUICC_SERVICE)
  43.             if (euiccManger != null && resultCode == EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR) {
  44.                 (euiccManger as EuiccManager).startResolutionActivity(
  45.                     requireActivity(),
  46.                     0,
  47.                     intent,
  48.                     PendingIntent.getBroadcast(requireContext(), 0, Intent(action), PendingIntent.FLAG_UPDATE_CURRENT)
  49.                 )
  50.             } else {
  51.                 // resultCode = 2
  52.                 // detailCode = 0
  53.                 // operationCode = 0
  54.                 // errorCode = 0
  55.                 // smdxSubjectCode = null
  56.                 // smdxReasonCode = null
  57.                 // intent.action = "download_subscription"
  58.             }
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment