Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class InstallESimFragment : BaseBindingFragment<FragmentInstallEsimBinding>() {
- override var layoutId = R.layout.fragment_install_esim
- private val args: InstallESimFragmentArgs by navArgs()
- private val action = "download_subscription"
- private val code by lazy { args.code }
- @RequiresApi(Build.VERSION_CODES.P)
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- val euiccManger = requireContext().getSystemService(Context.EUICC_SERVICE)
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P || euiccManger == null || !(euiccManger as EuiccManager).isEnabled) {
- requireActivity().onBackPressed()
- }
- binding.btnInstall.setOnClickListener {
- requireContext().registerReceiver(receiver, IntentFilter(action))
- val sub = DownloadableSubscription.forActivationCode(code)
- val callbackIntent = PendingIntent.getBroadcast(requireContext(), 0, Intent(action), PendingIntent.FLAG_UPDATE_CURRENT)
- (euiccManger as EuiccManager).downloadSubscription(sub, true, callbackIntent)
- }
- }
- override fun onDestroyView() {
- super.onDestroyView()
- requireContext().unregisterReceiver(receiver)
- }
- private val receiver: BroadcastReceiver = object : BroadcastReceiver() {
- @SuppressLint("InlinedApi")
- @RequiresApi(Build.VERSION_CODES.P)
- override fun onReceive(context: Context, intent: Intent?) {
- val detailCode = intent?.getIntExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE, 0)
- val operationCode = intent?.getIntExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE, 0)
- val errorCode = intent?.getIntExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE, 0)
- val smdxSubjectCode = intent?.getStringExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE)
- val smdxReasonCode = intent?.getStringExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE)
- val euiccManger = context.getSystemService(Context.EUICC_SERVICE)
- if (euiccManger != null && resultCode == EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR) {
- (euiccManger as EuiccManager).startResolutionActivity(
- requireActivity(),
- 0,
- intent,
- PendingIntent.getBroadcast(requireContext(), 0, Intent(action), PendingIntent.FLAG_UPDATE_CURRENT)
- )
- } else {
- // resultCode = 2
- // detailCode = 0
- // operationCode = 0
- // errorCode = 0
- // smdxSubjectCode = null
- // smdxReasonCode = null
- // intent.action = "download_subscription"
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment