Как войти в систему из Csipsimple по нажатию кнопки выхода? - PullRequest
1 голос
/ 18 марта 2019

Я использую Csipsimple для своего приложения Voip. когда я нажимаю кнопку выхода из системы, появляется экран входа в систему, но когда я звоню после выхода из системы на этот номер, поступает входящий вызов, и вызов был подключен.

fun disconnect(quit: Boolean, ctx: Context?) {
        try {
            val intent = Intent(SipManager.ACTION_OUTGOING_UNREGISTER)
            intent.putExtra(SipManager.EXTRA_OUTGOING_ACTIVITY, ComponentName(ctx, MainActivity::class.java))
            ctx!!.sendBroadcast(intent)

            val pref = PrefManager(ctx)
            pref.setLoggedIn(false)
            val crMain = ChattingClass()
            crMain.logoutFromChat(this)
            if (quit) {
                // also delete the shared preference when disconnect
                deleteUserFromPref(ctx)
                val finish = Intent(ctx, LoginMainActivity::class.java)
                finish.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK
                finish.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
                (ctx as Activity).startActivity(finish)
                (ctx as Activity).finish()
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

Я вызываю этот метод отключения при нажатии кнопки выхода из системы. я отменяю sip-соединение и очищаю общие предпочтения.

1 Ответ

0 голосов
/ 22 мая 2019

После некоторых исследований и изменений в моем классе prefProviderWrapper я получаю идеальное решение для выхода из учетной записи CsipSimple.

private var prefProviderWrapper: PreferencesProviderWrapper? = null

   fun disconnect(quit: Boolean, ctx: Context?) {
        try {
            prefProviderWrapper = PreferencesProviderWrapper(ctx)
            prefProviderWrapper!!.setPreferenceBooleanValue(PreferencesWrapper.HAS_BEEN_QUIT, true)
            val intent = Intent(SipManager.ACTION_OUTGOING_UNREGISTER)
            intent.putExtra(SipManager.EXTRA_OUTGOING_ACTIVITY, ComponentName(ctx, MainActivity::class.java))
            ctx!!.sendBroadcast(intent)

            val pref = PrefManager(ctx)
            pref.setLoggedIn(false)
            val crMain = ChattingClass()
            crMain.logoutFromChat(this)
            if (quit) {
                // also delete the shared preference when disconnect
                deleteUserFromPref(ctx)
                val finish = Intent(ctx, LoginMainActivity::class.java)
                finish.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK
                finish.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
                (ctx as Activity).startActivity(finish)
                (ctx as Activity).finish()
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
...