From b894516ab56693f8e35b33da2d94f738456201d3 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 2 Jun 2016 11:39:34 +0200 Subject: [PATCH] When killing task, service activity to start on incoming call was lost. --- .../linphone/LinphoneLauncherActivity.java | 1 - src/org/linphone/LinphonePreferences.java | 8 +++++++ src/org/linphone/LinphoneService.java | 23 +++++++++++++++---- .../assistant/RemoteProvisioningActivity.java | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/org/linphone/LinphoneLauncherActivity.java b/src/org/linphone/LinphoneLauncherActivity.java index 362769bc0..d3a56d61e 100644 --- a/src/org/linphone/LinphoneLauncherActivity.java +++ b/src/org/linphone/LinphoneLauncherActivity.java @@ -74,7 +74,6 @@ public class LinphoneLauncherActivity extends Activity { classToStart = LinphoneActivity.class; } - LinphoneService.instance().setActivityToLaunchOnIncomingReceived(classToStart); mHandler.postDelayed(new Runnable() { @Override public void run() { diff --git a/src/org/linphone/LinphonePreferences.java b/src/org/linphone/LinphonePreferences.java index 92092781d..74358b212 100644 --- a/src/org/linphone/LinphonePreferences.java +++ b/src/org/linphone/LinphonePreferences.java @@ -1236,4 +1236,12 @@ public class LinphonePreferences { public void neverAskCameraPerm(){ getConfig().setBool("app", "camera_perm", true); } + + public String getActivityToLaunchOnIncomingReceived() { + return getConfig().getString("app", "incoming_call_activity", "org.linphone.LinphoneActivity"); + } + + public void setActivityToLaunchOnIncomingReceived(String name) { + getConfig().setString("app", "incoming_call_activity", name); + } } diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index 6017b5d68..47dedb3bc 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -127,6 +127,7 @@ public final class LinphoneService extends Service { mMsgNotifCount = 0; } + @SuppressWarnings("unchecked") @Override public void onCreate() { super.onCreate(); @@ -163,8 +164,14 @@ public final class LinphoneService extends Service { LinphoneManager.createAndStart(LinphoneService.this); instance = this; // instance is ready once linphone manager has been created - LinphoneManager.getLc().addListener(mListener = new LinphoneCoreListenerBase(){ - + incomingReceivedActivityName = LinphonePreferences.instance().getActivityToLaunchOnIncomingReceived(); + try { + incomingReceivedActivity = (Class) Class.forName(incomingReceivedActivityName); + } catch (ClassNotFoundException e) { + Log.e(e); + } + + LinphoneManager.getLc().addListener(mListener = new LinphoneCoreListenerBase() { @Override public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) { if (instance == null) { @@ -411,6 +418,7 @@ public final class LinphoneService extends Service { private Object[] mSetForegroundArgs = new Object[1]; private Object[] mStartForegroundArgs = new Object[2]; private Object[] mStopForegroundArgs = new Object[1]; + private String incomingReceivedActivityName; private Class incomingReceivedActivity = LinphoneActivity.class; void invokeMethod(Method method, Object[] args) { @@ -569,8 +577,15 @@ public final class LinphoneService extends Service { super.onDestroy(); } - public void setActivityToLaunchOnIncomingReceived(Class activity) { - incomingReceivedActivity = activity; + @SuppressWarnings("unchecked") + public void setActivityToLaunchOnIncomingReceived(String activityName) { + try { + incomingReceivedActivity = (Class) Class.forName(activityName); + incomingReceivedActivityName = activityName; + LinphonePreferences.instance().setActivityToLaunchOnIncomingReceived(incomingReceivedActivityName); + } catch (ClassNotFoundException e) { + Log.e(e); + } resetIntentLaunchedOnNotificationClick(); } diff --git a/src/org/linphone/assistant/RemoteProvisioningActivity.java b/src/org/linphone/assistant/RemoteProvisioningActivity.java index 186c945a9..01d84e51e 100644 --- a/src/org/linphone/assistant/RemoteProvisioningActivity.java +++ b/src/org/linphone/assistant/RemoteProvisioningActivity.java @@ -192,7 +192,7 @@ public class RemoteProvisioningActivity extends Activity { private void goToLinphoneActivity() { if (LinphoneService.isReady()) { - LinphoneService.instance().setActivityToLaunchOnIncomingReceived(LinphoneLauncherActivity.class); + LinphoneService.instance().setActivityToLaunchOnIncomingReceived("org.linphone.LinphoneLauncherActivity"); //finish(); // To prevent the user to come back to this page using back button startActivity(new Intent().setClass(this, LinphoneLauncherActivity.class)); } else {