From 7d507bf329f8442d82d397abed6bc4af59a78756 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 22 May 2017 17:08:08 +0200 Subject: [PATCH] Fix possibly crash on account setting --- .../linphone/AccountPreferencesFragment.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/android/org/linphone/AccountPreferencesFragment.java b/src/android/org/linphone/AccountPreferencesFragment.java index 427b3557d..a8008ff1b 100644 --- a/src/android/org/linphone/AccountPreferencesFragment.java +++ b/src/android/org/linphone/AccountPreferencesFragment.java @@ -26,6 +26,7 @@ import org.linphone.assistant.AssistantActivity; import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; +import org.linphone.core.LinphoneProxyConfig; import org.linphone.mediastream.Log; import org.linphone.ui.PreferencesListFragment; @@ -300,6 +301,8 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen if (isNewAccount) { } else { if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null + && LinphoneManager.getLc().getProxyConfigList() != null + && LinphoneManager.getLc().getProxyConfigList().length > n && LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null) LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().enableIce(value); else @@ -316,6 +319,8 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen if (isNewAccount) { } else { if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null + && LinphoneManager.getLc().getProxyConfigList() != null + && LinphoneManager.getLc().getProxyConfigList().length > n && LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null) { LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().setStunServer(value); preference.setSummary(value); @@ -329,6 +334,12 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen private void initAccountPreferencesFields(PreferenceScreen parent) { boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n; + LinphoneProxyConfig proxyConfig = null; + if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null && + LinphoneManager.getLc().getProxyConfigList() != null && + LinphoneManager.getLc().getProxyConfigList().length > n) { + proxyConfig = (LinphoneProxyConfig) LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy(); + } accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc() , LinphonePreferences.instance().getXmlrpcUrl()); @@ -379,14 +390,12 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen CheckBoxPreference ice = (CheckBoxPreference) advanced.getPreference(1); ice.setOnPreferenceChangeListener(iceChangedListener); - if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null - && LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null) + if (proxyConfig != null) ice.setChecked(LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().iceEnabled()); EditTextPreference stunTurn = (EditTextPreference) advanced.getPreference(2); stunTurn.setOnPreferenceChangeListener(stunTurnChangedListener); - if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null - && LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null) { + if (proxyConfig != null) { stunTurn.setText(LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().getStunServer()); stunTurn.setSummary(LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().getStunServer()); }