Fixed resuming app from recent tasks after a call ended

This commit is contained in:
Sylvain Berfini 2021-07-09 12:01:25 +02:00
parent 38a144725f
commit 8c6758c4b8
3 changed files with 51 additions and 5 deletions

View file

@ -19,6 +19,7 @@
*/ */
package org.linphone.activities.call package org.linphone.activities.call
import android.content.Intent
import android.content.res.Configuration import android.content.res.Configuration
import android.content.res.Resources import android.content.res.Resources
import android.os.Bundle import android.os.Bundle
@ -33,6 +34,7 @@ import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R import org.linphone.R
import org.linphone.activities.call.viewmodels.ControlsFadingViewModel import org.linphone.activities.call.viewmodels.ControlsFadingViewModel
import org.linphone.activities.call.viewmodels.SharedCallViewModel import org.linphone.activities.call.viewmodels.SharedCallViewModel
import org.linphone.activities.main.MainActivity
import org.linphone.compatibility.Compatibility import org.linphone.compatibility.Compatibility
import org.linphone.core.tools.Log import org.linphone.core.tools.Log
import org.linphone.databinding.CallActivityBinding import org.linphone.databinding.CallActivityBinding
@ -112,7 +114,15 @@ class CallActivity : ProximitySensorActivity() {
if (coreContext.core.callsNb == 0) { if (coreContext.core.callsNb == 0) {
Log.w("[Call Activity] Resuming but no call found...") Log.w("[Call Activity] Resuming but no call found...")
finish() if (isTaskRoot) {
// When resuming app from recent tasks make sure MainActivity will be launched if there is no call
val intent = Intent()
intent.setClass(this, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
} else {
finish()
}
} else { } else {
coreContext.removeCallOverlay() coreContext.removeCallOverlay()
} }

View file

@ -23,6 +23,7 @@ import android.Manifest
import android.annotation.TargetApi import android.annotation.TargetApi
import android.app.KeyguardManager import android.app.KeyguardManager
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
@ -33,6 +34,7 @@ import org.linphone.R
import org.linphone.activities.GenericActivity import org.linphone.activities.GenericActivity
import org.linphone.activities.call.viewmodels.IncomingCallViewModel import org.linphone.activities.call.viewmodels.IncomingCallViewModel
import org.linphone.activities.call.viewmodels.IncomingCallViewModelFactory import org.linphone.activities.call.viewmodels.IncomingCallViewModelFactory
import org.linphone.activities.main.MainActivity
import org.linphone.compatibility.Compatibility import org.linphone.compatibility.Compatibility
import org.linphone.core.Call import org.linphone.core.Call
import org.linphone.core.tools.Log import org.linphone.core.tools.Log
@ -58,7 +60,15 @@ class IncomingCallActivity : GenericActivity() {
val incomingCall: Call? = findIncomingCall() val incomingCall: Call? = findIncomingCall()
if (incomingCall == null) { if (incomingCall == null) {
Log.e("[Incoming Call Activity] Couldn't find call in state Incoming") Log.e("[Incoming Call Activity] Couldn't find call in state Incoming")
finish() if (isTaskRoot) {
// When resuming app from recent tasks make sure MainActivity will be launched if there is no call
val intent = Intent()
intent.setClass(this, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
} else {
finish()
}
return return
} }
@ -103,7 +113,15 @@ class IncomingCallActivity : GenericActivity() {
val incomingCall: Call? = findIncomingCall() val incomingCall: Call? = findIncomingCall()
if (incomingCall == null) { if (incomingCall == null) {
Log.e("[Incoming Call Activity] Couldn't find call in state Incoming") Log.e("[Incoming Call Activity] Couldn't find call in state Incoming")
finish() if (isTaskRoot) {
// When resuming app from recent tasks make sure MainActivity will be launched if there is no call
val intent = Intent()
intent.setClass(this, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
} else {
finish()
}
} }
} }

View file

@ -22,6 +22,7 @@ package org.linphone.activities.call
import android.Manifest import android.Manifest
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.annotation.TargetApi import android.annotation.TargetApi
import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
@ -33,6 +34,7 @@ import org.linphone.R
import org.linphone.activities.call.viewmodels.CallViewModel import org.linphone.activities.call.viewmodels.CallViewModel
import org.linphone.activities.call.viewmodels.CallViewModelFactory import org.linphone.activities.call.viewmodels.CallViewModelFactory
import org.linphone.activities.call.viewmodels.ControlsViewModel import org.linphone.activities.call.viewmodels.ControlsViewModel
import org.linphone.activities.main.MainActivity
import org.linphone.core.Call import org.linphone.core.Call
import org.linphone.core.tools.Log import org.linphone.core.tools.Log
import org.linphone.databinding.CallOutgoingActivityBinding import org.linphone.databinding.CallOutgoingActivityBinding
@ -56,7 +58,15 @@ class OutgoingCallActivity : ProximitySensorActivity() {
val outgoingCall: Call? = findOutgoingCall() val outgoingCall: Call? = findOutgoingCall()
if (outgoingCall == null) { if (outgoingCall == null) {
Log.e("[Outgoing Call Activity] Couldn't find call in state Outgoing") Log.e("[Outgoing Call Activity] Couldn't find call in state Outgoing")
finish() if (isTaskRoot) {
// When resuming app from recent tasks make sure MainActivity will be launched if there is no call
val intent = Intent()
intent.setClass(this, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
} else {
finish()
}
return return
} }
@ -122,7 +132,15 @@ class OutgoingCallActivity : ProximitySensorActivity() {
val outgoingCall: Call? = findOutgoingCall() val outgoingCall: Call? = findOutgoingCall()
if (outgoingCall == null) { if (outgoingCall == null) {
Log.e("[Outgoing Call Activity] Couldn't find call in state Outgoing") Log.e("[Outgoing Call Activity] Couldn't find call in state Outgoing")
finish() if (isTaskRoot) {
// When resuming app from recent tasks make sure MainActivity will be launched if there is no call
val intent = Intent()
intent.setClass(this, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
} else {
finish()
}
} }
} }