diff --git a/app/src/main/java/org/linphone/LinphoneActivity.java b/app/src/main/java/org/linphone/LinphoneActivity.java index edd3ceaed..7b983d2ad 100644 --- a/app/src/main/java/org/linphone/LinphoneActivity.java +++ b/app/src/main/java/org/linphone/LinphoneActivity.java @@ -412,7 +412,6 @@ public class LinphoneActivity extends LinphoneGenericActivity if (lc != null) { lc.removeListener(mListener); } - mCallTransfer = false; mIsOnBackground = true; super.onPause(); @@ -534,6 +533,7 @@ public class LinphoneActivity extends LinphoneGenericActivity }*/ Bundle extras = intent.getExtras(); + mCallTransfer = false; if (extras != null) { if (extras.getBoolean("GoToChat", false)) { String localSipUri = extras.getString("LocalSipUri"); @@ -566,6 +566,12 @@ public class LinphoneActivity extends LinphoneGenericActivity goToDialerFragment(); } else if (extras.getBoolean("Transfer", false)) { intent.putExtra("DoNotGoToCallActivity", true); + mCallTransfer = true; + if (LinphoneManager.getLc().getCallsNb() > 0) { + initInCallMenuLayout(); + } else { + resetClassicMenuLayoutAndGoBackToCallIfStillRunning(); + } } else if (extras.getBoolean("AddCall", false)) { intent.putExtra("DoNotGoToCallActivity", true); } else if (intent.getStringExtra("msgShared") != null) { @@ -1382,7 +1388,12 @@ public class LinphoneActivity extends LinphoneGenericActivity AddressType address = new AddressText(this, null); address.setText(number); address.setDisplayedName(name); - LinphoneManager.getInstance().newOutgoingCall(address); + if (!mCallTransfer) { + LinphoneManager.getInstance().newOutgoingCall(address); + } else { + addressWaitingToBeCalled = number; + displayDialer(); + } } public void startIncallActivity() { diff --git a/app/src/main/java/org/linphone/fragments/DialerFragment.java b/app/src/main/java/org/linphone/fragments/DialerFragment.java index 2dd72a331..2cc0d3587 100644 --- a/app/src/main/java/org/linphone/fragments/DialerFragment.java +++ b/app/src/main/java/org/linphone/fragments/DialerFragment.java @@ -20,9 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import android.app.Fragment; -import android.content.Intent; import android.content.res.Configuration; -import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -32,11 +30,8 @@ import android.widget.ImageView; import android.widget.LinearLayout; import org.linphone.LinphoneActivity; import org.linphone.LinphoneManager; -import org.linphone.LinphoneService; import org.linphone.R; -import org.linphone.contacts.ContactsManager; import org.linphone.core.Core; -import org.linphone.core.tools.Log; import org.linphone.views.AddressAware; import org.linphone.views.AddressText; import org.linphone.views.CallButton; @@ -178,8 +173,9 @@ public class DialerFragment extends Fragment { String addressWaitingToBeCalled = LinphoneActivity.instance().addressWaitingToBeCalled; if (addressWaitingToBeCalled != null) { mAddress.setText(addressWaitingToBeCalled); - if (getResources() - .getBoolean(R.bool.automatically_start_intercepted_outgoing_gsm_call)) { + if (!LinphoneActivity.instance().isCallTransfer() + && getResources() + .getBoolean(R.bool.automatically_start_intercepted_outgoing_gsm_call)) { newOutgoingCall(addressWaitingToBeCalled); } LinphoneActivity.instance().addressWaitingToBeCalled = null; @@ -208,6 +204,7 @@ public class DialerFragment extends Fragment { mAddContact.setImageResource(R.drawable.call_back); mAddContact.setOnClickListener(mCancelListener); } else { + mCall.resetClickListener(); if (LinphoneManager.getLc().getVideoActivationPolicy().getAutomaticallyInitiate()) { mCall.setImageResource(R.drawable.call_video_start); } else { @@ -235,33 +232,4 @@ public class DialerFragment extends Fragment { displayTextInAddressBar(numberOrSipAddress); LinphoneManager.getInstance().newOutgoingCall(mAddress); } - - public void newOutgoingCall(Intent intent) { - if (intent != null && intent.getData() != null) { - String scheme = intent.getData().getScheme(); - if (scheme.startsWith("imto")) { - mAddress.setText("sip:" + intent.getData().getLastPathSegment()); - } else if (scheme.startsWith("call") || scheme.startsWith("sip")) { - mAddress.setText(intent.getData().getSchemeSpecificPart()); - } else { - Uri contactUri = intent.getData(); - String address = - ContactsManager.getInstance() - .getAddressOrNumberForAndroidContact( - LinphoneService.instance().getContentResolver(), - contactUri); - if (address != null) { - mAddress.setText(address); - } else { - Log.e("Unknown scheme: ", scheme); - mAddress.setText(intent.getData().getSchemeSpecificPart()); - } - } - - mAddress.clearDisplayedName(); - intent.setData(null); - - LinphoneManager.getInstance().newOutgoingCall(mAddress); - } - } }