Better support for multi call.
Bug: 73775453,73775590
Test: unit tests
PiperOrigin-RevId: 191657758
Change-Id: If1ae5505185191f04fd57aa828ae5bcc9c21b173
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 65ef323..44d8667 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -151,6 +151,7 @@
private boolean didShowVideoCallScreen;
private boolean didShowRttCallScreen;
private boolean didShowSpeakEasyScreen;
+ private String lastShownSpeakEasyScreenUniqueCallid = "";
private boolean dismissKeyguard;
private boolean isInShowMainInCallFragment;
private boolean isRecreating; // whether the activity is going to be recreated
@@ -1353,15 +1354,18 @@
private boolean showSpeakEasyFragment(FragmentTransaction transaction, DialerCall call) {
- // TODO(erfanian): Support multiple speakeasy screens.
if (didShowSpeakEasyScreen) {
- return false;
+ if (lastShownSpeakEasyScreenUniqueCallid.equals(call.getUniqueCallId())) {
+ return false;
+ }
+ hideSpeakEasyFragment(transaction);
}
Optional<Fragment> speakEasyFragment = speakEasyCallManager.getSpeakEasyFragment(call);
if (speakEasyFragment.isPresent()) {
transaction.add(R.id.main, speakEasyFragment.get(), Tags.SPEAK_EASY_SCREEN);
didShowSpeakEasyScreen = true;
+ lastShownSpeakEasyScreenUniqueCallid = call.getUniqueCallId();
return true;
}
return false;