diff --git a/src/org/linphone/LinphoneLauncherActivity.java b/src/org/linphone/LinphoneLauncherActivity.java index e310858be..36537a443 100644 --- a/src/org/linphone/LinphoneLauncherActivity.java +++ b/src/org/linphone/LinphoneLauncherActivity.java @@ -53,6 +53,8 @@ public class LinphoneLauncherActivity extends Activity { } protected void onServiceReady() { + LinphoneService.instance().setActivityToLaunchOnIncomingReceived(LinphoneActivity.class); + startActivity(new Intent() .setClass(this, LinphoneActivity.class) .setData(getIntent().getData())); diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index 57d8694a7..1f3230252 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -35,6 +35,7 @@ import org.linphone.core.Log; import org.linphone.core.OnlineStatus; import org.linphone.mediastream.Version; +import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -86,7 +87,7 @@ public final class LinphoneService extends Service implements LinphoneServiceLis /** * @throws RuntimeException service not instantiated */ - static LinphoneService instance() { + public static LinphoneService instance() { if (isReady()) return instance; throw new RuntimeException("LinphoneService not instantiated yet"); @@ -242,6 +243,7 @@ public final class LinphoneService extends Service implements LinphoneServiceLis private Object[] mSetForegroundArgs = new Object[1]; private Object[] mStartForegroundArgs = new Object[2]; private Object[] mStopForegroundArgs = new Object[1]; + private Class incomingReceivedActivity = LinphoneActivity.class; void invokeMethod(Method method, Object[] args) { try { @@ -438,7 +440,17 @@ public final class LinphoneService extends Service implements LinphoneServiceLis }); } } - + + public void setActivityToLaunchOnIncomingReceived(Class activity) { + incomingReceivedActivity = activity; + } + + protected void onIncomingReceived() { + //wakeup linphone + startActivity(new Intent() + .setClass(this, incomingReceivedActivity) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + } public void onCallStateChanged(final LinphoneCall call, final State state, final String message) { if (instance == null) { @@ -446,10 +458,7 @@ public final class LinphoneService extends Service implements LinphoneServiceLis return; } if (state == LinphoneCall.State.IncomingReceived) { - //wakeup linphone - startActivity(new Intent() - .setClass(this, LinphoneActivity.class) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + onIncomingReceived(); } if (state == State.CallUpdatedByRemote) {