mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-04-21 12:08:29 +00:00
Fixed click on call notification not opening in-call activity
This commit is contained in:
parent
1d122abb17
commit
43d5e8ff23
2 changed files with 71 additions and 46 deletions
|
|
@ -393,6 +393,12 @@ class NotificationsManager @MainThread constructor(private val context: Context)
|
||||||
|
|
||||||
val callNotificationIntent = Intent(context, CallActivity::class.java)
|
val callNotificationIntent = Intent(context, CallActivity::class.java)
|
||||||
callNotificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
callNotificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
if (isIncoming) {
|
||||||
|
callNotificationIntent.putExtra("IncomingCall", true)
|
||||||
|
} else {
|
||||||
|
callNotificationIntent.putExtra("ActiveCall", true)
|
||||||
|
}
|
||||||
|
|
||||||
val pendingIntent = PendingIntent.getActivity(
|
val pendingIntent = PendingIntent.getActivity(
|
||||||
context,
|
context,
|
||||||
0,
|
0,
|
||||||
|
|
@ -866,6 +872,7 @@ class NotificationsManager @MainThread constructor(private val context: Context)
|
||||||
setWhen(System.currentTimeMillis())
|
setWhen(System.currentTimeMillis())
|
||||||
setAutoCancel(false)
|
setAutoCancel(false)
|
||||||
setOngoing(true)
|
setOngoing(true)
|
||||||
|
setContentIntent(pendingIntent)
|
||||||
setFullScreenIntent(pendingIntent, true)
|
setFullScreenIntent(pendingIntent, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ package org.linphone.ui.call
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.app.PictureInPictureParams
|
import android.app.PictureInPictureParams
|
||||||
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
|
@ -232,52 +233,7 @@ class CallActivity : GenericActivity() {
|
||||||
|
|
||||||
callsViewModel.goToActiveCallEvent.observe(this) {
|
callsViewModel.goToActiveCallEvent.observe(this) {
|
||||||
it.consume { singleCall ->
|
it.consume { singleCall ->
|
||||||
val navController = findNavController(R.id.call_nav_container)
|
navigateToActiveCall(singleCall)
|
||||||
val action = when (navController.currentDestination?.id) {
|
|
||||||
R.id.outgoingCallFragment -> {
|
|
||||||
if (singleCall) {
|
|
||||||
Log.i("$TAG Going from outgoing call fragment to call fragment")
|
|
||||||
OutgoingCallFragmentDirections.actionOutgoingCallFragmentToActiveCallFragment()
|
|
||||||
} else {
|
|
||||||
Log.i(
|
|
||||||
"$TAG Going from outgoing call fragment to conference call fragment"
|
|
||||||
)
|
|
||||||
OutgoingCallFragmentDirections.actionOutgoingCallFragmentToActiveConferenceCallFragment()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
R.id.incomingCallFragment -> {
|
|
||||||
if (singleCall) {
|
|
||||||
Log.i("$TAG Going from incoming call fragment to call fragment")
|
|
||||||
IncomingCallFragmentDirections.actionIncomingCallFragmentToActiveCallFragment()
|
|
||||||
} else {
|
|
||||||
Log.i(
|
|
||||||
"$TAG Going from incoming call fragment to conference call fragment"
|
|
||||||
)
|
|
||||||
IncomingCallFragmentDirections.actionIncomingCallFragmentToActiveConferenceCallFragment()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
R.id.activeConferenceCallFragment -> {
|
|
||||||
if (singleCall) {
|
|
||||||
Log.i("$TAG Going from conference call fragment to call fragment")
|
|
||||||
ActiveConferenceCallFragmentDirections.actionActiveConferenceCallFragmentToActiveCallFragment()
|
|
||||||
} else {
|
|
||||||
Log.i(
|
|
||||||
"$TAG Going from conference call fragment to conference call fragment"
|
|
||||||
)
|
|
||||||
ActiveConferenceCallFragmentDirections.actionGlobalActiveConferenceCallFragment()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
if (singleCall) {
|
|
||||||
Log.i("$TAG Going from call fragment to call fragment")
|
|
||||||
ActiveCallFragmentDirections.actionGlobalActiveCallFragment()
|
|
||||||
} else {
|
|
||||||
Log.i("$TAG Going from call fragment to conference call fragment")
|
|
||||||
ActiveCallFragmentDirections.actionActiveCallFragmentToActiveConferenceCallFragment()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
navController.navigate(action)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -333,6 +289,19 @@ class CallActivity : GenericActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onNewIntent(intent: Intent?) {
|
||||||
|
super.onNewIntent(intent)
|
||||||
|
|
||||||
|
if (intent?.extras?.getBoolean("ActiveCall", false) == true) {
|
||||||
|
navigateToActiveCall(
|
||||||
|
callViewModel.conferenceModel.isCurrentCallInConference.value == false
|
||||||
|
)
|
||||||
|
} else if (intent?.extras?.getBoolean("IncomingCall", false) == true) {
|
||||||
|
val action = IncomingCallFragmentDirections.actionGlobalIncomingCallFragment()
|
||||||
|
findNavController(R.id.call_nav_container).navigate(action)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onUserLeaveHint() {
|
override fun onUserLeaveHint() {
|
||||||
super.onUserLeaveHint()
|
super.onUserLeaveHint()
|
||||||
|
|
||||||
|
|
@ -446,6 +415,55 @@ class CallActivity : GenericActivity() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun navigateToActiveCall(notInConference: Boolean) {
|
||||||
|
val navController = findNavController(R.id.call_nav_container)
|
||||||
|
val action = when (navController.currentDestination?.id) {
|
||||||
|
R.id.outgoingCallFragment -> {
|
||||||
|
if (notInConference) {
|
||||||
|
Log.i("$TAG Going from outgoing call fragment to call fragment")
|
||||||
|
OutgoingCallFragmentDirections.actionOutgoingCallFragmentToActiveCallFragment()
|
||||||
|
} else {
|
||||||
|
Log.i(
|
||||||
|
"$TAG Going from outgoing call fragment to conference call fragment"
|
||||||
|
)
|
||||||
|
OutgoingCallFragmentDirections.actionOutgoingCallFragmentToActiveConferenceCallFragment()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
R.id.incomingCallFragment -> {
|
||||||
|
if (notInConference) {
|
||||||
|
Log.i("$TAG Going from incoming call fragment to call fragment")
|
||||||
|
IncomingCallFragmentDirections.actionIncomingCallFragmentToActiveCallFragment()
|
||||||
|
} else {
|
||||||
|
Log.i(
|
||||||
|
"$TAG Going from incoming call fragment to conference call fragment"
|
||||||
|
)
|
||||||
|
IncomingCallFragmentDirections.actionIncomingCallFragmentToActiveConferenceCallFragment()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
R.id.activeConferenceCallFragment -> {
|
||||||
|
if (notInConference) {
|
||||||
|
Log.i("$TAG Going from conference call fragment to call fragment")
|
||||||
|
ActiveConferenceCallFragmentDirections.actionActiveConferenceCallFragmentToActiveCallFragment()
|
||||||
|
} else {
|
||||||
|
Log.i(
|
||||||
|
"$TAG Going from conference call fragment to conference call fragment"
|
||||||
|
)
|
||||||
|
ActiveConferenceCallFragmentDirections.actionGlobalActiveConferenceCallFragment()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
if (notInConference) {
|
||||||
|
Log.i("$TAG Going from call fragment to call fragment")
|
||||||
|
ActiveCallFragmentDirections.actionGlobalActiveCallFragment()
|
||||||
|
} else {
|
||||||
|
Log.i("$TAG Going from call fragment to conference call fragment")
|
||||||
|
ActiveCallFragmentDirections.actionActiveCallFragmentToActiveConferenceCallFragment()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
navController.navigate(action)
|
||||||
|
}
|
||||||
|
|
||||||
private fun hideUI(hide: Boolean) {
|
private fun hideUI(hide: Boolean) {
|
||||||
Log.i("$TAG Switching full screen mode to ${if (hide) "ON" else "OFF"}")
|
Log.i("$TAG Switching full screen mode to ${if (hide) "ON" else "OFF"}")
|
||||||
val windowInsetsCompat = WindowInsetsControllerCompat(window, window.decorView)
|
val windowInsetsCompat = WindowInsetsControllerCompat(window, window.decorView)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue