diff --git a/src/org/linphone/AbstractCalleesActivity.java b/src/org/linphone/AbstractCalleesActivity.java index a9d1b4494..777e80105 100644 --- a/src/org/linphone/AbstractCalleesActivity.java +++ b/src/org/linphone/AbstractCalleesActivity.java @@ -99,21 +99,22 @@ public abstract class AbstractCalleesActivity extends ListActivity implements Li @Override protected void onResume() { mSpecificCalls = updateSpecificCallsList(); - if (!finishOnEmptySpecificCallsWhileResuming() || mSpecificCalls.size() != 0) { + if (shouldFinishCalleeActivity()) { + finish(); + } else { setActive(true); updateUI(); mSpeakerButton.setChecked(LinphoneManager.getInstance().isSpeakerOn()); mMuteMicButton.setChecked(LinphoneManager.getLc().isMicMuted()); LinphoneManager.addListener(this); LinphoneManager.startProximitySensorForActivity(this); - } else { - finish(); } super.onResume(); } - protected boolean finishOnEmptySpecificCallsWhileResuming() { - return false; + // Hook + protected boolean shouldFinishCalleeActivity() { + return mSpecificCalls.size() == 0; } @Override @@ -132,7 +133,11 @@ public abstract class AbstractCalleesActivity extends ListActivity implements Li mHandler.post(new Runnable() { public void run() { mSpecificCalls = updateSpecificCallsList(); - updateUI(); + if (shouldFinishCalleeActivity()) { + finish(); + } else { + updateUI(); + } } }); } diff --git a/src/org/linphone/ConferenceDetailsActivity.java b/src/org/linphone/ConferenceDetailsActivity.java index 72d4b5722..44657962b 100644 --- a/src/org/linphone/ConferenceDetailsActivity.java +++ b/src/org/linphone/ConferenceDetailsActivity.java @@ -55,11 +55,6 @@ public class ConferenceDetailsActivity extends AbstractCalleesActivity { return new ConfListAdapter(); } - @Override - protected boolean finishOnEmptySpecificCallsWhileResuming() { - return true; - } - private class ConfListAdapter extends CalleeListAdapter { @Override public View getView(int position, View v, ViewGroup parent) { diff --git a/src/org/linphone/IncallActivity.java b/src/org/linphone/IncallActivity.java index 9a4da2fab..135538a3c 100644 --- a/src/org/linphone/IncallActivity.java +++ b/src/org/linphone/IncallActivity.java @@ -119,7 +119,10 @@ public class IncallActivity extends AbstractCalleesActivity implements super.onCreate(savedInstanceState); } - + @Override + protected boolean shouldFinishCalleeActivity() { + return lc().getCallsNb() == 0; + } @Override protected CalleeListAdapter createCalleeListAdapter() { diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index ffe96b430..bb5d3c0fc 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -161,8 +161,6 @@ public class LinphoneActivity extends TabActivity implements stopService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class)); } break; - case incall_activity: - break; default: break; } @@ -456,11 +454,8 @@ public class LinphoneActivity extends TabActivity implements if (IncallActivity.active) { return; } - startActivityForResult(new Intent().setClass( - LinphoneActivity.this, - IncallActivity.class), - incall_activity); - IncallActivity.active = true; + Intent intent = new Intent().setClass(this, IncallActivity.class); + startActivityForResult(intent, incall_activity); } public void startIncomingCallActivity(LinphoneCall pendingCall) { @@ -532,7 +527,6 @@ public class LinphoneActivity extends TabActivity implements private void exitIncallActivity() { - finishActivity(incall_activity); setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE); }