When killing task, service activity to start on incoming call was lost.

This commit is contained in:
Sylvain Berfini 2016-06-02 11:39:34 +02:00
parent c79317486d
commit b894516ab5
4 changed files with 28 additions and 6 deletions

View file

@ -74,7 +74,6 @@ public class LinphoneLauncherActivity extends Activity {
classToStart = LinphoneActivity.class; classToStart = LinphoneActivity.class;
} }
LinphoneService.instance().setActivityToLaunchOnIncomingReceived(classToStart);
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {
@Override @Override
public void run() { public void run() {

View file

@ -1236,4 +1236,12 @@ public class LinphonePreferences {
public void neverAskCameraPerm(){ public void neverAskCameraPerm(){
getConfig().setBool("app", "camera_perm", true); 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);
}
} }

View file

@ -127,6 +127,7 @@ public final class LinphoneService extends Service {
mMsgNotifCount = 0; mMsgNotifCount = 0;
} }
@SuppressWarnings("unchecked")
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
@ -163,8 +164,14 @@ public final class LinphoneService extends Service {
LinphoneManager.createAndStart(LinphoneService.this); LinphoneManager.createAndStart(LinphoneService.this);
instance = this; // instance is ready once linphone manager has been created instance = this; // instance is ready once linphone manager has been created
LinphoneManager.getLc().addListener(mListener = new LinphoneCoreListenerBase(){ incomingReceivedActivityName = LinphonePreferences.instance().getActivityToLaunchOnIncomingReceived();
try {
incomingReceivedActivity = (Class<? extends Activity>) Class.forName(incomingReceivedActivityName);
} catch (ClassNotFoundException e) {
Log.e(e);
}
LinphoneManager.getLc().addListener(mListener = new LinphoneCoreListenerBase() {
@Override @Override
public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) { public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) {
if (instance == null) { if (instance == null) {
@ -411,6 +418,7 @@ public final class LinphoneService extends Service {
private Object[] mSetForegroundArgs = new Object[1]; private Object[] mSetForegroundArgs = new Object[1];
private Object[] mStartForegroundArgs = new Object[2]; private Object[] mStartForegroundArgs = new Object[2];
private Object[] mStopForegroundArgs = new Object[1]; private Object[] mStopForegroundArgs = new Object[1];
private String incomingReceivedActivityName;
private Class<? extends Activity> incomingReceivedActivity = LinphoneActivity.class; private Class<? extends Activity> incomingReceivedActivity = LinphoneActivity.class;
void invokeMethod(Method method, Object[] args) { void invokeMethod(Method method, Object[] args) {
@ -569,8 +577,15 @@ public final class LinphoneService extends Service {
super.onDestroy(); super.onDestroy();
} }
public void setActivityToLaunchOnIncomingReceived(Class<? extends Activity> activity) { @SuppressWarnings("unchecked")
incomingReceivedActivity = activity; public void setActivityToLaunchOnIncomingReceived(String activityName) {
try {
incomingReceivedActivity = (Class<? extends Activity>) Class.forName(activityName);
incomingReceivedActivityName = activityName;
LinphonePreferences.instance().setActivityToLaunchOnIncomingReceived(incomingReceivedActivityName);
} catch (ClassNotFoundException e) {
Log.e(e);
}
resetIntentLaunchedOnNotificationClick(); resetIntentLaunchedOnNotificationClick();
} }

View file

@ -192,7 +192,7 @@ public class RemoteProvisioningActivity extends Activity {
private void goToLinphoneActivity() { private void goToLinphoneActivity() {
if (LinphoneService.isReady()) { 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 //finish(); // To prevent the user to come back to this page using back button
startActivity(new Intent().setClass(this, LinphoneLauncherActivity.class)); startActivity(new Intent().setClass(this, LinphoneLauncherActivity.class));
} else { } else {