From f33d1a23abe09e72c07c1065c607a361ddb55d94 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 24 Oct 2018 11:17:12 +0200 Subject: [PATCH] Fixed go to chat from call & add call / transfer call --- .../linphone/activities/LinphoneActivity.java | 43 ++++++++----------- .../org/linphone/call/CallActivity.java | 8 ++-- .../org/linphone/chat/GroupChatFragment.java | 1 - 3 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/android/org/linphone/activities/LinphoneActivity.java b/src/android/org/linphone/activities/LinphoneActivity.java index ad5c7d026..3e3eaab69 100644 --- a/src/android/org/linphone/activities/LinphoneActivity.java +++ b/src/android/org/linphone/activities/LinphoneActivity.java @@ -153,7 +153,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick private RelativeLayout sideMenuContent, quitLayout, defaultAccount; private ListView accountsList, sideMenuItemList; private ImageView menu; - private boolean doNotGoToCallActivity = false; private List sideMenuItems; private boolean callTransfer = false; private boolean isOnBackground = false; @@ -299,10 +298,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick } mAlwaysChangingPhoneAngle = rotation; - Bundle extras = getIntent().getExtras(); - if (extras != null && extras.getBoolean("GoToChat", false)) { - onNewIntent(getIntent()); - } + onNewIntent(getIntent()); } private void initButtons() { @@ -1141,10 +1137,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick } else if (resultCode == Activity.RESULT_FIRST_USER && requestCode == CALL_ACTIVITY) { getIntent().putExtra("PreviousActivity", CALL_ACTIVITY); callTransfer = data != null && data.getBooleanExtra("Transfer", false); - boolean chat = data != null && data.getBooleanExtra("chat", false); - if (chat) { - pendingFragmentTransaction = FragmentsAvailable.CHAT_LIST; - } if (LinphoneManager.getLc().getCallsNb() > 0) { initInCallMenuLayout(callTransfer); } else { @@ -1161,8 +1153,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick @Override protected void onPause() { - getIntent().putExtra("PreviousActivity", 0); - Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); if (lc != null) { lc.removeListener(mListener); @@ -1354,10 +1344,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick super.onRestoreInstanceState(savedInstanceState); } - public void disableGoToCall() { - doNotGoToCallActivity = true; - } - @Override protected void onResume() { super.onResume(); @@ -1395,7 +1381,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick LinphoneManager.getInstance().changeStatusToOnline(); - if (getIntent().getIntExtra("PreviousActivity", 0) != CALL_ACTIVITY && !doNotGoToCallActivity) { + if (!getIntent().getBooleanExtra("DoNotGoToCallActivity", false)) { if (LinphoneManager.getLc().getCalls().length > 0) { Call call = LinphoneManager.getLc().getCalls()[0]; Call.State onCallStateChanged = call.getState(); @@ -1420,7 +1406,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick displayChat(null, null, intent.getStringExtra("fileShared")); intent.putExtra("fileShared", ""); } - doNotGoToCallActivity = false; isOnBackground = false; if (intent != null) { @@ -1470,13 +1455,17 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick Bundle extras = intent.getExtras(); if (extras != null && extras.getBoolean("GoToChat", false)) { String sipUri = extras.getString("ChatContactSipUri"); - doNotGoToCallActivity = true; - displayChat(sipUri, null, null); + intent.putExtra("DoNotGoToCallActivity", true); + if (sipUri == null) { + goToChatList(); + } else { + displayChat(sipUri, null, null); + } } else if (extras != null && extras.getBoolean("GoToHistory", false)) { - doNotGoToCallActivity = true; + intent.putExtra("DoNotGoToCallActivity", true); changeCurrentFragment(FragmentsAvailable.HISTORY_LIST, null); } else if (extras != null && extras.getBoolean("GoToInapp", false)) { - doNotGoToCallActivity = true; + intent.putExtra("DoNotGoToCallActivity", true); displayInapp(); } else if (extras != null && extras.getBoolean("Notification", false)) { if (LinphoneManager.getLc().getCallsNb() > 0) { @@ -1484,7 +1473,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick startIncallActivity(call); } } else if (extras != null && extras.getBoolean("StartCall", false)) { - boolean extraBool = extras.getBoolean("StartCall", false); if (CallActivity.isInstanciated()) { CallActivity.instance().startIncomingCallActivity(); } else { @@ -1492,17 +1480,19 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick goToDialerFragment(); //startActivity(new Intent(this, CallIncomingActivity.class)); } + } else if (extras != null && extras.getBoolean("Transfer", false)) { + intent.putExtra("DoNotGoToCallActivity", true); } else { DialerFragment dialerFragment = DialerFragment.instance(); if (dialerFragment != null) { if (extras != null && extras.containsKey("SipUriOrNumber")) { if (getResources().getBoolean(R.bool.automatically_start_intercepted_outgoing_gsm_call)) { - ((DialerFragment) dialerFragment).newOutgoingCall(extras.getString("SipUriOrNumber")); + dialerFragment.newOutgoingCall(extras.getString("SipUriOrNumber")); } else { - ((DialerFragment) dialerFragment).displayTextInAddressBar(extras.getString("SipUriOrNumber")); + dialerFragment.displayTextInAddressBar(extras.getString("SipUriOrNumber")); } } else { - ((DialerFragment) dialerFragment).newOutgoingCall(intent); + dialerFragment.newOutgoingCall(intent); } } else { if (extras != null && extras.containsKey("SipUriOrNumber")) { @@ -1512,7 +1502,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick } if (LinphoneManager.getLc().getCalls().length > 0) { // If a call is ringing, start incomingcallactivity - Collection incoming = new ArrayList(); + Collection incoming = new ArrayList<>(); incoming.add(Call.State.IncomingReceived); if (LinphoneUtils.getCallsInState(LinphoneManager.getLc(), incoming).size() > 0) { if (CallActivity.isInstanciated()) { @@ -1523,6 +1513,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick } } } + setIntent(intent); } public boolean isOnBackground() { diff --git a/src/android/org/linphone/call/CallActivity.java b/src/android/org/linphone/call/CallActivity.java index be223c053..26c9182cc 100644 --- a/src/android/org/linphone/call/CallActivity.java +++ b/src/android/org/linphone/call/CallActivity.java @@ -1065,15 +1065,17 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList private void goBackToDialerAndDisplayTransferButton() { Intent intent = new Intent(); + intent.setClass(this, LinphoneActivity.class); intent.putExtra("Transfer", true); - setResult(Activity.RESULT_FIRST_USER, intent); + startActivity(intent); finish(); } private void goToChatList() { Intent intent = new Intent(); - intent.putExtra("chat", true); - setResult(Activity.RESULT_FIRST_USER, intent); + intent.setClass(this, LinphoneActivity.class); + intent.putExtra("GoToChat", true); + startActivity(intent); finish(); } diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index a2195de13..a523bbc2c 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -673,7 +673,6 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con Intent chooserIntent = Intent.createChooser(galleryIntent, getString(R.string.image_picker_title)); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{})); - LinphoneActivity.instance().disableGoToCall(); startActivityForResult(chooserIntent, ADD_PHOTO); }