From 777359e29fe60761131f7719967ad5ff6828bfeb Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Dec 2019 16:33:00 +0100 Subject: [PATCH] Fixed call transfer --- .../org/linphone/activities/MainActivity.java | 12 ++++++++++++ .../main/java/org/linphone/call/CallActivity.java | 4 ++-- .../linphone/contacts/ContactDetailsFragment.java | 3 ++- .../java/org/linphone/dialer/DialerActivity.java | 15 +++++++++++++-- .../linphone/history/HistoryDetailFragment.java | 3 ++- .../org/linphone/history/HistoryFragment.java | 4 ++-- 6 files changed, 33 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/MainActivity.java b/app/src/main/java/org/linphone/activities/MainActivity.java index a169abc9f..eea09d23c 100644 --- a/app/src/main/java/org/linphone/activities/MainActivity.java +++ b/app/src/main/java/org/linphone/activities/MainActivity.java @@ -633,6 +633,18 @@ public abstract class MainActivity extends LinphoneGenericActivity } } + public void newOutgoingCall(String to) { + if (LinphoneManager.getCore().getCallsNb() > 0) { + Intent intent = new Intent(this, DialerActivity.class); + intent.addFlags( + Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + intent.putExtra("SipUri", to); + this.startActivity(intent); + } else { + LinphoneManager.getCallManager().newOutgoingCall(to, null); + } + } + private void addFlagsToIntent(Intent intent) { intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); } diff --git a/app/src/main/java/org/linphone/call/CallActivity.java b/app/src/main/java/org/linphone/call/CallActivity.java index 499799627..f96e95d92 100644 --- a/app/src/main/java/org/linphone/call/CallActivity.java +++ b/app/src/main/java/org/linphone/call/CallActivity.java @@ -929,7 +929,7 @@ public class CallActivity extends LinphoneGenericActivity private void goBackToDialer() { Intent intent = new Intent(); intent.setClass(this, DialerActivity.class); - intent.putExtra("Transfer", false); + intent.putExtra("isTransfer", false); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent); } @@ -937,7 +937,7 @@ public class CallActivity extends LinphoneGenericActivity private void goBackToDialerAndDisplayTransferButton() { Intent intent = new Intent(); intent.setClass(this, DialerActivity.class); - intent.putExtra("Transfer", true); + intent.putExtra("isTransfer", true); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent); } diff --git a/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java b/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java index 02e8d3bc1..01fc667c9 100644 --- a/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java +++ b/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java @@ -36,6 +36,7 @@ import android.widget.TableLayout; import android.widget.TextView; import org.linphone.LinphoneManager; import org.linphone.R; +import org.linphone.activities.MainActivity; import org.linphone.contacts.views.ContactAvatar; import org.linphone.core.Address; import org.linphone.core.ChatRoom; @@ -304,7 +305,7 @@ public class ContactDetailsFragment extends Fragment implements ContactsUpdatedL @Override public void onClick(View v) { String tag = (String) v.getTag(); - LinphoneManager.getCallManager().newOutgoingCall(tag, null); + ((MainActivity) getActivity()).newOutgoingCall(tag); } }); if (contactAddress != null) { diff --git a/app/src/main/java/org/linphone/dialer/DialerActivity.java b/app/src/main/java/org/linphone/dialer/DialerActivity.java index 6e1e3a534..b5f18ca90 100644 --- a/app/src/main/java/org/linphone/dialer/DialerActivity.java +++ b/app/src/main/java/org/linphone/dialer/DialerActivity.java @@ -116,13 +116,26 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC Manifest.permission.READ_CONTACTS }; + mIsTransfer = false; + if (getIntent() != null) { + mIsTransfer = getIntent().getBooleanExtra("isTransfer", false); + } + handleIntentParams(getIntent()); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); + handleIntentParams(intent); + + if (intent != null) { + mIsTransfer = intent.getBooleanExtra("isTransfer", mIsTransfer); + if (mAddress != null && intent.getStringExtra("SipUri") != null) { + mAddress.setText(intent.getStringExtra("SipUri")); + } + } } @Override @@ -207,9 +220,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC } }); - mIsTransfer = false; if (getIntent() != null) { - mIsTransfer = getIntent().getBooleanExtra("Transfer", false); mAddress.setText(getIntent().getStringExtra("SipUri")); } diff --git a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java index 6fbcb484a..342ca1e8f 100644 --- a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java +++ b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java @@ -33,6 +33,7 @@ import java.util.Arrays; import java.util.List; import org.linphone.LinphoneManager; import org.linphone.R; +import org.linphone.activities.MainActivity; import org.linphone.contacts.ContactsManager; import org.linphone.contacts.LinphoneContact; import org.linphone.contacts.views.ContactAvatar; @@ -80,7 +81,7 @@ public class HistoryDetailFragment extends Fragment { new OnClickListener() { @Override public void onClick(View v) { - LinphoneManager.getCallManager().newOutgoingCall(mSipUri, mDisplayName); + ((MainActivity) getActivity()).newOutgoingCall(mSipUri); } }); diff --git a/app/src/main/java/org/linphone/history/HistoryFragment.java b/app/src/main/java/org/linphone/history/HistoryFragment.java index f2f150a09..f31f0e55f 100644 --- a/app/src/main/java/org/linphone/history/HistoryFragment.java +++ b/app/src/main/java/org/linphone/history/HistoryFragment.java @@ -38,6 +38,7 @@ import java.util.List; import org.linphone.LinphoneContext; import org.linphone.LinphoneManager; import org.linphone.R; +import org.linphone.activities.MainActivity; import org.linphone.call.views.LinphoneLinearLayoutManager; import org.linphone.contacts.ContactsManager; import org.linphone.contacts.ContactsUpdatedListener; @@ -206,8 +207,7 @@ public class HistoryFragment extends Fragment address = log.getToAddress(); } if (address != null) { - LinphoneManager.getCallManager() - .newOutgoingCall(address.asStringUriOnly(), null); + ((MainActivity) getActivity()).newOutgoingCall(address.asStringUriOnly()); } } }