override fun onCreate()

in azure-communication-ui/demo-app/src/calling/java/com/azure/android/communication/ui/callingcompositedemoapp/CallLauncherActivity.kt [70:288]


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (shouldFinish()) {
            finish()
            return
        }
        isActivityRunning = true
        createNotificationChannels()
        initCallCompositeManager()
        SettingsFeatures.initialize(applicationContext)

        if (!AppCenter.isConfigured() && !BuildConfig.DEBUG) {
            AppCenter.start(
                application,
                BuildConfig.APP_SECRET,
                Analytics::class.java,
                Crashes::class.java,
                Distribute::class.java
            )
        }
        // Register Memory Viewer with FeatureFlags
        conditionallyRegisterDiagnostics(this)
        FeatureFlags.registerAdditionalFeature(AdditionalFeatures.secondaryThemeFeature)

        binding = ActivityCallLauncherBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val data: Uri? = intent?.data
        val deeplinkAcsToken = data?.getQueryParameter("acstoken")
        val deeplinkName = data?.getQueryParameter("name")
        val deeplinkGroupId = data?.getQueryParameter("groupid")
        val deeplinkTeamsUrl = data?.getQueryParameter("teamsurl")
        /* </ROOMS_SUPPORT:5> */
        val deepLinkRoomsId = data?.getQueryParameter("roomsid")
        /* </ROOMS_SUPPORT:0> */
        val participantMRIs = data?.getQueryParameter("participantmris")
        val identity = data?.getQueryParameter("identity")

        binding.run {
            if (!deeplinkAcsToken.isNullOrEmpty()) {
                acsTokenText.setText(deeplinkAcsToken)
            } else {
                acsTokenText.setText(BuildConfig.ACS_TOKEN)
                launchButton.isEnabled = BuildConfig.ACS_TOKEN.isNotEmpty()
            }

            if (!identity.isNullOrEmpty()) {
                acsIdentityText.setText(deeplinkAcsToken)
            } else {
                acsIdentityText.setText(BuildConfig.ACS_IDENTITY)
            }

            if (!deeplinkName.isNullOrEmpty()) {
                userNameText.setText(deeplinkName)
            } else {
                userNameText.setText(BuildConfig.USER_NAME)
            }

            if (!deeplinkGroupId.isNullOrEmpty()) {
                groupIdOrTeamsMeetingLinkText.setText(deeplinkGroupId)
                groupCallRadioButton.isChecked = true
                teamsMeetingRadioButton.isChecked = false
                roomsMeetingRadioButton.isChecked = false
            } else if (!deeplinkTeamsUrl.isNullOrEmpty()) {
                groupIdOrTeamsMeetingLinkText.setText(deeplinkTeamsUrl)
                groupCallRadioButton.isChecked = false
                teamsMeetingRadioButton.isChecked = true
                roomsMeetingRadioButton.isChecked = false
            } else if (!deepLinkRoomsId.isNullOrEmpty()) {
                groupIdOrTeamsMeetingLinkText.setText(deepLinkRoomsId)
                groupCallRadioButton.isChecked = false
                teamsMeetingRadioButton.isChecked = false
                roomsMeetingRadioButton.isChecked = true
            } else if (!participantMRIs.isNullOrEmpty()) {
                groupIdOrTeamsMeetingLinkText.setText(participantMRIs)
            } else {
                groupIdOrTeamsMeetingLinkText.setText(BuildConfig.GROUP_CALL_ID)
            }

            acsTokenText.addTextChangedListener(object : TextWatcher {
                override fun beforeTextChanged(
                    s: CharSequence?,
                    start: Int,
                    count: Int,
                    after: Int
                ) {
                }

                override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                    launchButton.isEnabled = !s.isNullOrEmpty()
                }

                override fun afterTextChanged(s: Editable?) {
                }
            })

            launchButton.setOnClickListener {
                launch()
            }

            showUIButton.setOnClickListener {
                showUI()
            }
            closeCompositeButton.setOnClickListener { callCompositeManager.dismissCallComposite() }

            groupCallRadioButton.setOnClickListener {
                if (groupCallRadioButton.isChecked) {
                    groupIdOrTeamsMeetingLinkText.setText(BuildConfig.GROUP_CALL_ID)
                    teamsMeetingRadioButton.isChecked = false
                    oneToNCallRadioButton.isChecked = false
                    teamsMeetingPasscode.visibility = View.GONE
                    teamsMeetingId.visibility = View.GONE
                    roomsMeetingRadioButton.isChecked = false
                    oneToNCallRadioButton.isChecked = false
                }
            }
            teamsMeetingRadioButton.setOnClickListener {
                if (teamsMeetingRadioButton.isChecked) {
                    groupIdOrTeamsMeetingLinkText.setText(BuildConfig.TEAMS_MEETING_LINK)
                    groupCallRadioButton.isChecked = false
                    oneToNCallRadioButton.isChecked = false
                    teamsMeetingPasscode.visibility = View.VISIBLE
                    teamsMeetingId.visibility = View.VISIBLE
                    roomsMeetingRadioButton.isChecked = false
                }
            }
            roomsMeetingRadioButton.setOnClickListener {
                if (roomsMeetingRadioButton.isChecked) {
                    groupIdOrTeamsMeetingLinkText.setText(BuildConfig.ROOM_ID)
                    groupCallRadioButton.isChecked = false
                    oneToNCallRadioButton.isChecked = false
                    teamsMeetingRadioButton.isChecked = false
                    teamsMeetingPasscode.visibility = View.GONE
                    teamsMeetingId.visibility = View.GONE
                    /* </MEETING_ID_LOCATOR> */
                }
            }

            oneToNCallRadioButton.setOnClickListener {
                if (oneToNCallRadioButton.isChecked) {
                    groupIdOrTeamsMeetingLinkText.setText(BuildConfig.PARTICIPANT_MRIS)
                    groupCallRadioButton.isChecked = false
                    teamsMeetingRadioButton.isChecked = false
                    teamsMeetingPasscode.visibility = View.GONE
                    teamsMeetingId.visibility = View.GONE
                    roomsMeetingRadioButton.isChecked = false
                }
            }

            showCallHistoryButton.setOnClickListener {
                showCallHistory()
            }

            acceptCallButton.setOnClickListener {
                incomingCallLayout.visibility = LinearLayout.GONE
                val acsIdentityToken = sharedPreference.getString(CACHED_TOKEN, "")
                val displayName = sharedPreference.getString(CACHED_USER_NAME, "")
                callCompositeManager.acceptIncomingCall(this@CallLauncherActivity, acsIdentityToken!!, displayName!!)
            }

            registerPushNotificationButton.setOnClickListener {
                if (acsTokenText.text.toString().isEmpty()) {
                    showAlert("ACS token is empty.")
                    return@setOnClickListener
                }
                cacheTokenAndDisplayName()
                registerPushNotification()
            }

            unregisterPushNotificationButton.setOnClickListener {
                if (acsTokenText.text.toString().isEmpty()) {
                    showAlert("ACS token is empty.")
                    return@setOnClickListener
                }
                cacheTokenAndDisplayName()
                unregisterPushNotification()
            }

            declineCallButton.setOnClickListener {
                incomingCallLayout.visibility = LinearLayout.GONE
                callCompositeManager.declineIncomingCall()
            }

            lifecycleScope.launchAll(
                {
                    callCompositeManager.callCompositeCallStateStateFlow.collect {
                        runOnUiThread {
                            if (it.isNotEmpty()) {
                                callStateText.text = it
                                DismissCompositeButtonView.get(application).updateText(it)
                            }
                        }
                    }
                },
            )

            if (BuildConfig.DEBUG) {
                versionText.text = "${BuildConfig.VERSION_NAME}"
            } else {
                versionText.text = "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})"
            }
        }

        handlePushNotificationAction(intent)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            registerReceiver(
                callLauncherBroadCastReceiver,
                IntentFilter(CALL_LAUNCHER_BROADCAST_ACTION),
                RECEIVER_EXPORTED
            )
        } else {
            registerReceiver(
                callLauncherBroadCastReceiver,
                IntentFilter(CALL_LAUNCHER_BROADCAST_ACTION)
            )
        }
        autoRegisterPushIfNeeded()
    }