From ebb630ce9dfe23293f0659c88da27fd6508fcd49 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 10 Jan 2013 11:17:33 +0100 Subject: [PATCH] Fix wifi only setting changed while in DATA connection --- src/org/linphone/PreferencesFragment.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/org/linphone/PreferencesFragment.java b/src/org/linphone/PreferencesFragment.java index 419848541..bb1a7cf67 100644 --- a/src/org/linphone/PreferencesFragment.java +++ b/src/org/linphone/PreferencesFragment.java @@ -50,6 +50,8 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.os.Bundle; import android.os.Handler; import android.preference.CheckBoxPreference; @@ -163,7 +165,6 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa findPreference(R.string.pref_echo_canceller_calibration_key).setLayoutResource(R.layout.hidden); } - if (getResources().getBoolean(R.bool.disable_all_patented_codecs_for_markets)) { Preference prefH264 = findPreference(R.string.pref_video_codec_h264_key); prefH264.setEnabled(false); @@ -227,6 +228,24 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa return true; } }); + + CheckBoxPreference wifiOnly = (CheckBoxPreference) findPreference(R.string.pref_wifi_only_key); + wifiOnly.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + boolean isSettingActivated = (Boolean) newValue; + + ConnectivityManager cm = (ConnectivityManager) LinphoneActivity.instance().getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo eventInfo = cm.getActiveNetworkInfo(); + + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + if (eventInfo.getTypeName().equals("mobile") && lc != null) { + lc.setNetworkReachable(!isSettingActivated); + } + + return true; + } + }); } private void createAddAccountButton() {