Как войти в систему из Csipsimple по нажатию кнопки выхода?
Я использую 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 ответ
После некоторых изменений кода в моем классе 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()
}