From 5a32346d2c8939c7a32f93cc0ceeb15de10f7e4e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 15 Jul 2014 16:13:29 +0200 Subject: [PATCH] Fix crash with sms configuration --- src/org/linphone/LinphonePreferences.java | 22 +++++++++++++++---- .../setup/RemoteProvisioningActivity.java | 4 +++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/org/linphone/LinphonePreferences.java b/src/org/linphone/LinphonePreferences.java index f5a762703..a050ff785 100644 --- a/src/org/linphone/LinphonePreferences.java +++ b/src/org/linphone/LinphonePreferences.java @@ -54,8 +54,12 @@ public class LinphonePreferences { } + public void setContext(Context c) { + mContext = c; + } + private String getString(int key) { - if (mContext == null) { + if (mContext == null && LinphoneManager.isInstanciated()) { mContext = LinphoneManager.getInstance().getContext(); } @@ -71,8 +75,14 @@ public class LinphonePreferences { public LpConfig getConfig() { LinphoneCore lc = getLc(); - if (lc != null) + if (lc != null) { return lc.getConfig(); + } + + if (!LinphoneManager.isInstanciated()) { + Log.w("LinphoneManager not instanciated yet..."); + return LinphoneCoreFactory.instance().createLpConfig(mContext.getFilesDir().getAbsolutePath() + "/.linphonerc"); + } return LinphoneCoreFactory.instance().createLpConfig(LinphoneManager.getInstance().mLinphoneConfigFile); } @@ -986,9 +996,13 @@ public class LinphonePreferences { } public void setRemoteProvisioningUrl(String url) { - if (url != null && url.length() == 0) + if (url != null && url.length() == 0) { url = null; - getConfig().setString("misc", "config-uri", url); + } + + LpConfig config = getConfig(); + config.setString("misc", "config-uri", url); + config.sync(); } public String getRemoteProvisioningUrl() { diff --git a/src/org/linphone/setup/RemoteProvisioningActivity.java b/src/org/linphone/setup/RemoteProvisioningActivity.java index 6c33bba4a..c99ae48d7 100644 --- a/src/org/linphone/setup/RemoteProvisioningActivity.java +++ b/src/org/linphone/setup/RemoteProvisioningActivity.java @@ -22,6 +22,7 @@ import static android.content.Intent.ACTION_MAIN; import org.linphone.LinphoneActivity; import org.linphone.LinphoneLauncherActivity; +import org.linphone.LinphoneManager; import org.linphone.LinphonePreferences; import org.linphone.LinphoneService; import org.linphone.LinphoneSimpleListener.LinphoneOnRemoteProvisioningListener; @@ -157,13 +158,14 @@ public class RemoteProvisioningActivity extends Activity implements LinphoneOnRe private void setRemoteProvisioningAddressAndRestart(String configUri) { if (spinner != null) spinner.setVisibility(View.VISIBLE); + LinphonePreferences.instance().setContext(this); // Needed, else the next call will crash LinphonePreferences.instance().setRemoteProvisioningUrl(configUri); LinphonePreferences.instance().firstRemoteProvisioningSuccessful(); mHandler.postDelayed(new Runnable() { @Override public void run() { - // Restart Linphone + LinphoneManager.destroy(); stopService(new Intent(ACTION_MAIN).setClass(RemoteProvisioningActivity.this, LinphoneService.class)); Intent intent = new Intent(); intent.setClass(RemoteProvisioningActivity.this, LinphoneLauncherActivity.class);