diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml
index f96aa416e..6133c8b63 100644
--- a/res/values/non_localizable_strings.xml
+++ b/res/values/non_localizable_strings.xml
@@ -139,6 +139,10 @@
pref_first_time_linphone_chat_storage
pref_sipaccount_key
+ pref_audio_key
+ pref_call_key
+ pref_chat_key
+ pref_network_key
pref_advanced_key
pref_manage_key
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 798b2d34d..5fab85a1f 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -49,7 +49,8 @@
+ android:title="@string/pref_audio_title"
+ android:key="@string/pref_audio_key">
@@ -176,7 +177,8 @@
+ android:title="@string/pref_call_title"
+ android:key="@string/pref_call_key">
@@ -228,7 +230,8 @@
+ android:title="@string/pref_chat_title"
+ android:key="@string/pref_chat_key">
@@ -250,7 +253,8 @@
+ android:title="@string/pref_network_title"
+ android:key="@string/pref_network_key">
@@ -338,7 +342,8 @@
+ android:title="@string/pref_advanced_title"
+ android:key="@string/pref_advanced_key">
diff --git a/src/android/org/linphone/LinphoneActivity.java b/src/android/org/linphone/LinphoneActivity.java
index e3780f8fb..cbeb043bd 100644
--- a/src/android/org/linphone/LinphoneActivity.java
+++ b/src/android/org/linphone/LinphoneActivity.java
@@ -29,6 +29,7 @@ import java.util.Comparator;
import java.util.Date;
import java.util.List;
+import org.linphone.SettingsFragment;
import org.linphone.LinphoneManager.AddressType;
import org.linphone.assistant.AssistantActivity;
import org.linphone.assistant.RemoteProvisioningLoginActivity;
@@ -1423,6 +1424,12 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
+
+ if (getCurrentFragment() == FragmentsAvailable.SETTINGS) {
+ if (fragment instanceof SettingsFragment) {
+ ((SettingsFragment) fragment).closePreferenceScreen();
+ }
+ }
Bundle extras = intent.getExtras();
if (extras != null && extras.getBoolean("GoToChat", false)) {
diff --git a/src/android/org/linphone/SettingsFragment.java b/src/android/org/linphone/SettingsFragment.java
index dd3ad4208..83a32795e 100644
--- a/src/android/org/linphone/SettingsFragment.java
+++ b/src/android/org/linphone/SettingsFragment.java
@@ -67,10 +67,25 @@ public class SettingsFragment extends PreferencesListFragment {
private LinphonePreferences mPrefs;
private Handler mHandler = new Handler();
private LinphoneCoreListenerBase mListener;
+ private PreferenceScreen currentPreferenceScreen;
+ private Preference.OnPreferenceClickListener prefClickListener = new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ currentPreferenceScreen = (PreferenceScreen) preference;
+ return false;
+ }
+ };
public SettingsFragment() {
super(R.xml.preferences);
}
+
+ public void closePreferenceScreen() {
+ if (currentPreferenceScreen != null) {
+ currentPreferenceScreen.getDialog().dismiss();
+ currentPreferenceScreen = null;
+ }
+ }
@Override
public void onCreate(Bundle bundle) {
@@ -145,6 +160,15 @@ public class SettingsFragment extends PreferencesListFragment {
// Sets listener for each preference to update the matching value in linphonecore
private void setListeners() {
+ findPreference(getString(R.string.pref_tunnel_key)).setOnPreferenceClickListener(prefClickListener);
+ findPreference(getString(R.string.pref_audio_key)).setOnPreferenceClickListener(prefClickListener);
+ findPreference(getString(R.string.pref_video_key)).setOnPreferenceClickListener(prefClickListener);
+ findPreference(getString(R.string.pref_call_key)).setOnPreferenceClickListener(prefClickListener);
+ findPreference(getString(R.string.pref_chat_key)).setOnPreferenceClickListener(prefClickListener);
+ findPreference(getString(R.string.pref_network_key)).setOnPreferenceClickListener(prefClickListener);
+ findPreference(getString(R.string.pref_advanced_key)).setOnPreferenceClickListener(prefClickListener);
+
+
setTunnelPreferencesListener();
setAudioPreferencesListener();
setVideoPreferencesListener();